ディレクトリとそのサブディレクトリ内のすべての.cファイルは、次のように見つけることができます。
find /user/home/me/tests/ -name \*\.c
ディレクトリのリストは「list_of_dir」ファイルに保存されます。
/user/home/me/test1
/user/home/me/test2
/user/home/me/test3
...
そのファイルとそのサブディレクトリにあるすべての.cファイルを見つけるためにfindコマンドをどのように提供できますか?
よろしくお願いします。
編集:私のデフォルトのシェルはtcshです。
ベストアンサー1
ファイルに改行区切りのディレクトリリストがあり、そのリストを安全に渡すlist_of_dir
場合find
噴射またはパス名拡張そして、行の長さの制限を超えずに以下を使用します(ここでそのオプションとオプションがxargs
GNU実装であると仮定)。-d
-r
xargs -r -d'\n' -I{} find {} -name '*.c' <list_of_dir
真のセキュリティのためには、改行で区切られたリストではなく、NULで区切られたディレクトリのリストを使用する必要があります。list_of_dir0
NULで区切られたディレクトリのリストが含まれている場合は、次のようにします。
xargs -r -0 -I{} find {} -name '*.c' <list_of_dir0
どのように動作しますか?
-r
find
ディレクトリリストが空でない場合は、xargsを実行しないように指示してください。-0
入力時にNULで区切られたリストを期待するようにxargsに指示します。これは-d'\n'
、改行で区切られたリストを期待するようにxargsに指示するよりも安全な方法です。- xargs に find コマンドで文字が見える位置
I{}
にディレクトリを配置するよう指示します (一度に 1 つずつ、各ディレクトリに対して 1 つの呼び出しが実行されます)。{}
find