任何人都有一种在 bash 中查找和复制文件的替代方法:
find . -ctime -15 | awk '{print "cp " $1 " ../otherfolder/"}' | sh
我喜欢这种方式,因为它很灵活,因为我正在构建我的命令(可以是任何命令)并在之后执行它。
还有其他方法可以将命令简化为文件列表吗?
我建议使用
find
的 -exec
选项:
find . -ctime 15 -exec cp {} ../otherfolder \;
一如既往,请查阅联机帮助页以获得最佳结果。
我通常用这个:
find . -ctime -15 -exec cp {} ../otherfolder/ \;
如果您的
cp
是 GNU 的:
find . -ctime 15 -print0 | xargs --no-run-if-empty -0 cp --target-directory=../otherfolder
你可以用
xargs
来做到这一点:
$ find . -ctime 15 -print0 | xargs -0 -I{} cp {} ../otherfolder
另请参阅 shell 脚本中的 grep 实用程序。
用它来复印和许多其他事情:
for f in $(find /apps -type f -name 'foo'); do cp ${f} ${f}.bak; cmd2; cmd3; done;
-exec 可能是最佳选择,除非您有太多文件。然后使用 xargs。