我使用以下命令查找文件并将其复制到其他地方,
find /search/ -name file.txt -exec cp -Rp {} /destination \;
如何复制父目录中的所有文件和子目录file.txt
?
例子,
/search/test/sub
/search/test/sub2
/search/test/file.txt
/search/test/file.doc
它们应该被复制为
/destination/sub
/destination/sub2
/destination/file.txt
/destination/file.doc
使用
-execdir
(不是标准谓词,但经常实现),给定的实用程序将在找到文件的目录中执行。这意味着你可以做
没有
-execdir
:或者,
最后两个变体为每个找到的文件执行一个简短的内嵌脚本。该脚本将文件的路径名作为其第一个参数(in
$1
),并使用${1%/*}
(标准参数替换)从路径名中去除文件名。然后它应用与cp
第一个变体相同的命令-execdir
。执行该代码的代码更忠实地模拟了顶部
cd
的变体实际所做的事情,而中间的变体通过引用路径末尾的源目录来绕过更改目录。-execdir
.