以下を使用して、特定のテキスト文字列を含むフォルダ内のファイルを検索できます。
grep -lir 'string' ~/directory/*
上記の結果に表示されるファイルを別の場所に移動するにはどうすればよいですか?
ベストアンサー1
3番目の構文でxargs
使用されます。mv
mv [OPTION]... -t DIRECTORY SOURCE...
grep -lir 'string' ~/directory/* | xargs mv -t DEST
特殊文字(スペース、引用符)を含むファイルに注意してください。この場合、フィルタリングされたリストを使用するとsed
(ファイル名の周りに引用符を追加するs/^/'/;s/$/'/
)ことができますが、これらの引用符がファイル名に表示されないようにする必要があります。 GNUには、NULで終わるファイル名の/オプションがgrep
あります。-Z
--null
3番目の構文の代替案は、プレースホルダ文字列()で使用することですmv
。xargs
-I
もう1つのオプションは、ire_and_cursesの答えで述べたように、コマンドの置き換えまたは$( )
バックティック``
です。