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 回答