コマンドを実行しようとしていますが、find
フォルダの設定方法により、スクリプト内で次の警告が複数回表示されます。
find -L ./server/ -type f -printf '%s %p\n' | <rest of really long complicated script>
出力
find: File system loop detected; ‘./server/~andreas/root’ is part of the same file system loop as ‘./’.
find: File system loop detected; ‘./server/~bob/root’ is part of the same file system loop as ‘./’.
find: File system loop detected; ‘./server/~charles/root’ is part of the same file system loop as ‘./’.
...
わかりましたなぜこのメッセージを受け取ります。これらのシンボリックリンクは他のスクリプトで使用するために意図的にここに配置されているので、コンソール出力でこれらの警告を安全に無視したいと思います。
find
同様の警告が表示されないようにする方法「ファイルシステムループが検出されました」しかし、まだすべての「本当の」エラーメッセージを保持しますか?
find
名前付きのすべてのディレクトリを無視するとは言えませんroot
。検索オプションがありますが、-nowarn
どこに置いても機能しません。これまで、照会のための「ログレベル」オプションが見つかりませんでした。
答え1
Bashシェルを使用している場合は、出力リダイレクトを使用してstderrをフィルタリングして特定のエラーメッセージを表示しないことがありますgrep
。
find ... 2> >(grep -v "File system loop detected") | ...
これは、bashのマニュアル/マンページの「プロセスの置き換え」セクションで説明されています。https://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html#Process-Substitution