我需要在一些文件中找到一个文本字符串。这会给我一个清单:
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
请告知
答案 0 :(得分: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
答案 1 :(得分: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盒子,但至少它应该给你一个接近的想法
答案 2 :(得分:0)
以下命令将grep
pattern
和copy
文件放到您想要的位置。
find /path/to/search -type f -exec grep -q "pattern" '{}' ';' -exec cp '{}' /path/to/copy ';'
复制文件后,您可以使用rename
命令重新命名它们。