特定のテキストを含むファイルを検索し、それらのファイルを別のディレクトリにコピーします

特定のテキストを含むファイルを検索し、それらのファイルを別のディレクトリにコピーします

特定のテキストを含むディレクトリ内のファイルを検索し、別のディレクトリにコピーするにはどうすればよいでしょうか? .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 searchstringsearchstring

答え2

検索したいベースディレクトリから簡単に実行できます

cp $(grep -r -l "the pattern" *) target_directory
  • grep -r再帰的を意味する
  • -lファイルパスをリストするが、その中の一致をリストしないことを意味します。

  • コマンドを囲むと$()、そのコマンドが実行され、結果が外側のコマンド内に配置されます。

  • cp はファイルのリストを受け取り、最後のパスがディレクトリである限り、それらをすべてそこにコピーします。

関連情報