使用bash中的给定前缀将批量文件复制到另一个目标

时间:2015-11-09 14:52:51

标签: linux bash

我想将原始位置/lib/中比其他文件更新的所有文件复制到另一个目的地/dest/lib/

要识别这些文件,我只需使用:

$ cd /lib/
$ find . -newer foobar
./foo/bar.py
./bar/foo/bar/foo.py
...

不幸的是,我不能简单地使用此命令,因为cp不知道如何动态创建文件夹。

所以我使用了这个命令:

find /foo -type f -newer foobar | \
    xargs -n1 -I% sh -c 'mkdir -vp `dirname /dest/%` && cp -v % /dest/%'

这看起来很复杂,速度非常慢。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以使用tar,例如,让您拥有目录'1', 你想把东西复制到目录'2',然后:

cd 1
tar -c a.txt 3/b.txt | tar -x -C ../2

您也可以使用rsync它与本地路径一起使用