Linuxでfindコマンドを実行するときにエラーを取り除く方法は?


3

次のコマンドを使って、ディレクトリ内の20個の大きなファイルを一覧表示します。しかし、ファイルリストとともに、それはまた、のようなエラーメッセージを表示します。 アクセス拒否 。追加してみた 2> /dev/null しかし、それはそれが好きではないようです。

これは私が使っているコマンドです

find . -type f -printf "%s %p\n" | sort -nr | head -n 20

すべてのエラーメッセージを回避し、ファイルの一覧のみを表示する方法を知っていますか?

回答:


3

bashでは、 2> /dev/null findコマンド自体の一部として、つまりパイプの前に追加する限り、実際にはうまくいきます。

例えば、これはうまくいくでしょう:

find -type f -printf "%s %p\n" 2> /dev/null | sort -nr | head -n 20

tcshでは、同じことをする簡単な方法はありませんが、 男tcsh 回避策について言及します。

シェルは現在標準出力もリダイレクトせずに診断出力をリダイレクトすることはできませんが、 (コマンド>出力ファイル)>&エラーファイル 'はしばしば許容できる回避策です。どちらでも 出力ファイル または エラーファイル 端末に出力を送信するには、 '/ dev / tty'を指定します。

普通のfindコマンドでは、これは次のようになります。

(find > /dev/tty) >& /dev/null

bashとは対照的に、パイプを使用するときは、配置する必要があります。 > /dev/tty 避けるために最後のパイプの後 あいまいな出力のリダイレクト エラーメッセージ。

これはtcshで動作します。

(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > /dev/tty) >& /dev/null

あいまいな出力のリダイレクト - あなたの提案では、私は次のエラーが出ています。
user196833

私はこれを見つけてみました。 -type f -printf "%s%p \ n" 2> / dev / null | sort -nr | head -n 20しかしエラーを出している - あいまいな出力リダイレクト
user196833

1
これは、bashではなくtcshを使用しているためだと思います。
user196833

tcshをインストールしましたが、方法が見つかりました。
Dennis

ファイルに出力するには: (find -type f -printf "%s %p\n" | sort -nr | head -n 20 > file.txt) >& /dev/null
Umber Ferrule
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.