特定のテキストを含むディレクトリ内のファイルを検索し、別のディレクトリにコピーするにはどうすればよいでしょうか? .ksh シェルを使用しています。
答え1
man xargs
旗を見てやりましょう-I
。
find /path/to/directory -type f -exec grep -il "your pattern" {} \; | xargs -I % cp % /dest/dir/
入力を節約するには、次のコマンドをシェル スクリプトに入力します。
#!/usr/bin/ksh
# Script name: locate
find /path/to/directory -type f -exec grep -il "$1" {} \; | xargs -I % cp % /dest/dir/
実行するには、検索するテキストを入力しますlocate searchstring
。searchstring
答え2
検索したいベースディレクトリから簡単に実行できます
cp $(grep -r -l "the pattern" *) target_directory
grep -r
再帰的を意味する-l
ファイルパスをリストするが、その中の一致をリストしないことを意味します。コマンドを囲むと
$()
、そのコマンドが実行され、結果が外側のコマンド内に配置されます。cp はファイルのリストを受け取り、最後のパスがディレクトリである限り、それらをすべてそこにコピーします。