私はこれが「権限」を含む警告をスキップすると思いました。
$ find / -iname "*mysql*" | grep -v "Permission"
find: /.DocumentRevisions-V100: Permission denied
find: /.fseventsd: Permission denied
find: /.Spotlight-V100: Permission denied
find: /.Trashes: Permission denied
しかしそれは真実ではない。どんな提案がありますか?
これに比べて期待通りに動作します。
$mkdir foo
$ls | grep -v "foo"
ベストアンサー1
警告はfind
エラーストリーム、STDERR、ファイル記述子2に表示されますが、パイプを使用するとSTDOUT(ファイル記述子1)のみがリダイレクトされ使用されるため、メッセージは引き続き表示されgrep
ます。
解決策:
警告に興味がないので、STDERRを次にリダイレクトしてください/dev/null
。
find / -iname "*mysql*" 2>/dev/null
必ず使用する必要がある場合は、grep
STDOUTとSTDERRを渡してから次のコマンドを使用してくださいgrep -v "Permission"
。
シェルが以下をサポートしている場合|&
:
find / -iname "*mysql*" |& grep -v "Permission"
POSIXスタイル:
find / -iname "*mysql*" 2>&1 | grep -v "Permission"
参考までに警告のソースを確認してください。非rootユーザーとして実行できるため、権限の問題がある可能性があります。この問題を解決するには、次のアカウントでコマンドを実行するか、find
それroot
に応じて検索を制限してください。