在文件中查找,然后使用Linux移动该文件?

时间:2013-02-28 03:19:58

标签: linux

我希望能够找到包含某些字符串的文件以及将该文件列表移动到目录X

我可以使用此命令查找文件

find . -iname 'commaus*' | xargs grep '>24901<' -sl

和此命令移动文件

mv * /home/user/scripts/xslt

但是有没有办法组合这些命令,以便移动找到的文件。

我见过类似的联合查找/动作命令,例如

find /home/user -name property_images -ok rm -f {} \;

但遵循此结构会返回错误

find . -iname 'commaus*' | xargs grep '>24901<' -sl -ok mv {} /home/user/scripts/xslt;

3 个答案:

答案 0 :(得分:2)

你可以把它包装成for循环

for i in `find /path/to/search -iname 'optionalfilename' -exec grep -H -m1 '>24901<' {} \; | awk -F: '{print $1}'
do
   mv $i /path/to/new/location
done

如果文件名包含空格或冒号

,则无法按预期工作

答案 1 :(得分:2)

使用循环。在这种情况下,请尝试:

for i in `find . -iname 'commaus*' | xargs grep '>24901<' -sl`; do mv "$i" /home/user/scripts/xslt/; done

非常hackish,但它应该工作。

答案 2 :(得分:2)

也可以尝试(没有循环):

find . -iname 'commaus*' | grep '>24901<' -sl -ok | xargs mv -t /home/user/scripts/xslt