0

いくつかのファイル内でテキスト文字列を見つける必要があります。これにより、リストが表示されます。

find . -type f -print0 | xargs -0 grep -il "google"

次に、それらのファイルをフォルダーにコピーして名前を変更する必要があります。だから私はそれらをこのようなものに再びパイプする必要があると思う

| xargs -0 -n1  -I '{}' cp '{}' ../testTarget/{}_RECOVERED

悲しいかな:

find . -type f -print0 | xargs -0 grep -il "google" |
xargs -0 -n1  -I '{}' cp '{}' ../testTarget/{}_RECOVERED

結果:cp: {}: No such file or directory

お知らせ下さい

  • ファイル名にはスペースとコンマが含まれています (Dovecot)
4

3 に答える 3

1
find . -type f -print0 | xargs -0 grep -lh "google" | xargs -I % cp % ../testTarget/%_RECOVERED

また

find SOURCE/ -type f -print0 | xargs -0 grep -lh "SEARCH_STRING" | xargs -I % cp % TARGET_DIR/%_RECOVERED
于 2013-07-06T16:03:35.380 に答える
0

次のコマンドはgrep、ファイルを目的の場所に移動しますpatterncopy

find /path/to/search -type f -exec grep -q "pattern" '{}' ';' -exec cp '{}' /path/to/copy ';'

ファイルがコピーされたら、renameコマンドを使用して、それに応じて名前を変更できます。

于 2013-07-04T08:13:24.810 に答える
0
for i in `ls -1tr`
{
SEARCH_STRING_LINE_NO=`grep -n SEARCH_STRING i | cut -d: -f1`;
if [ SEARCH_STRING_LINE_NO > 0 ] then
cp i folder_path_where_u_want_to_copy
fi
}

SEARCH_STRING を検索するテキスト文字列に置き換えます。

folder_path_where_u_want_to_copy を、SEARCH_STRING を含むファイルを移動するフォルダー パスに置き換えます。

これにより、SEARCH_STRING を含むファイルがフォルダー folder_path_where_u_want_to_copy にコピーされます。

現在、UNIXボックスを持っていないため、このコードをテストしていませんが、少なくともアプローチするアイデアが得られるはずです

于 2013-07-04T08:02:10.430 に答える