あなたはへのターゲットとしてディレクトリを渡すことができますgrep
と-R
してと入力パターンのファイル-f
:
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. If this option is used
multiple times or is combined with the -e (--regexp) option,
search for all patterns given. The empty file contains zero
patterns, and therefore matches nothing.
-R, --dereference-recursive
Read all files under each directory, recursively. Follow all
symbolic links, unlike -r.
だから、あなたは探しています:
grep -Ff subset.txt -r objects/
一致するファイルのリストは次のようにして取得できます。
grep -Flf subset.txt -r objects/
したがって、最終的なリストが長すぎない場合は、次のようにすることができます。
mv $(grep -Flf subset.txt -r objects/) new_dir/
それがargument list too long
エラーを返す場合は、以下を使用します。
grep -Flf subset.txt -r objects/ | xargs -I{} mv {} bar/
また、ファイル名にスペースやその他の奇妙な文字が含まれている可能性がある場合は、(GNUを想定してgrep
)使用します。
grep -FZlf subset.txt -r objects/ | xargs -0I{} mv {} bar/
最後に、バイナリファイルを除外する場合は、次を使用します。
grep -IFZlf subset.txt -r objects/ | xargs -0I{} mv {} bar/
"$(subset.txt)"
はそのようなコマンドを入れたのですか?これはコマンド置換であり、シェルをsubset.txt
(コマンドまたはスクリプトであるかのように)実行します。