![Linuxでfindを実行するときに「許可拒否」エラーをスキップする方法は? [コピー]](https://linux33.com/image/23892/Linux%E3%81%A7find%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E3%80%8C%E8%A8%B1%E5%8F%AF%E6%8B%92%E5%90%A6%E3%80%8D%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
Linux(SuSE)でこのコマンドを実行すると、次のようになります。
find / -name ant
次の形式のエラーメッセージがたくさん表示されます。
find: `/etc/cups/ssl': Permission denied
find
これらのエラー表示をスキップしてアクセス権のあるファイルのみを試すために必要なパラメータはありますか?
答え1
に送信されたメッセージをフィルタリングできますstderr
。私はstdout
これらの状態にリダイレクトすることを好みます。
find / -name art 2>&1 | grep -v "Permission denied"
説明する:
つまり、すべての一般出力は標準出力(stdout
)に送られます。すべてのエラーメッセージは標準エラー(stderr
)に関するものです。
grep
通常、指定された文字列を見つけて印刷し、-v
それを反転するので、すべての文字列を見つけて印刷します。いいえ「権限が拒否されました」が含まれています。通常、(ファイルディスクリプタ2)に送信されるstderr
エラーメッセージを含むfindコマンドのすべての出力はstdout
(ファイルディスクリプタ1)に移動し、コマンドによってフィルタリングされますgrep
。
これはbash/sh
シェルを使用していると仮定します。
tcsh/csh
使用する場所
find / -name art |& grep ....