![将文件从源目录复制到目标基目录并维护源路径](https://linux22.com/image/1252970/%E5%B0%86%E6%96%87%E4%BB%B6%E4%BB%8E%E6%BA%90%E7%9B%AE%E5%BD%95%E5%A4%8D%E5%88%B6%E5%88%B0%E7%9B%AE%E6%A0%87%E5%9F%BA%E7%9B%AE%E5%BD%95%E5%B9%B6%E7%BB%B4%E6%8A%A4%E6%BA%90%E8%B7%AF%E5%BE%84.png)
请原谅,我可能没有使用正确的术语来描述问题,并且误解了几个常用命令的最基本用法。
我有一个简单的 find 语句,用于定位要复制的文件。我想添加 -exec cp {} 并让 cp 将文件从源目录复制到新的基目录,但包含完整路径。例如:
find . -name *.txt
定位/user/username/projects/source.txt
cp {} [now what?]
将文件复制到/user/newuser/projects/source.txt
答案1
rsync -rlpv --files-from=<(find ...) /user/username/projects /user/newuser
答案2
如果您能确定所有子目录都存在,那么这是一个有趣的选择:
cd /user/username/
find . -name \*.gz | sed 's/\.\(.*\)/.\1 ..\/newuser\1/' | xargs -n2 cp