例如:
find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;
当我们有现有目录 txt 时,它可以正常工作。
据我所知 -cp 没有标志解决此问题。也许我应该使用 rsync 或其他方法?
答案1
好问题,你可以试试这个:
首先cd
进入/usr
,这是因为当你使用绝对路径(如/usr
)时find
,我怀疑它会导致{}
包含完整路径。
find . -type f -a -name "*.txt" -a -exec install -D {} ~/texts/{} \;
当我运行此命令时,收到以下错误消息:
找到:'./share/doc/google-chrome-stable':权限被拒绝
错误消息并不意味着操作整体失败,它只是意味着find
无法在./share/doc/google-chrome-stable
目录上运行命令。
但对我来说,所有其他文件及其路径都已复制,并且目录路径已根据需要创建。
经过进一步调查,错误原因是
% ls -al --directory ./share/doc/google-chrome-stable
drwx------ 2 root root 4096 Aug 21 12:45 ./share/doc/google-chrome-stable