![如何在一个命令中查找文件并复制到不存在的文件夹?](https://linux22.com/image/886140/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%96%87%E4%BB%B6%E5%B9%B6%E5%A4%8D%E5%88%B6%E5%88%B0%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%9F.png)
例如:
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