tarする必要があるファイルのリストがあります。通常は、
tar -cvf allfiles.tar -T mylist.txt
しかし、必要なファイルはサブディレクトリに分散しており、リストにはパスではなくファイル名のみが含まれていることがわかりました。
「find」と tar コマンドを組み合わせて、リスト上のファイルがサブディレクトリのどこに保存されていても、それらを検索する方法はありますか?
答え1
名前のリストとを使用してパスを見つけることができますfind
が、異なるディレクトリに同じ名前のファイルがある場合、ちょっとした例外が発生する可能性があります。
あまり問題にならない場合は、次の操作を実行できます。
find <main_directory> | grep -f mylist.txt
次に、リストをtar
コマンドに使用します。完全なコマンドは次のようになります。
tar cvf allfiles.tar -T <(find <main_directory> |
grep -f mylist.txt --color=never)
あなたに気づくしなければならないを使用してください--color=never
。そうしないと、grep で色がアクティブになっている場合に、 に無効な入力が送信されることになりますtar
。
この場合、大文字と小文字の区別を無視すると、grep
実際にはフィルタリングファイルには、フラグを追加するだけです-i
:
tar cvf allfiles.tar -T <(find <main_directory> |
grep -i -f mylist.txt --color=never)