如何在一个命令中查找文件并复制到不存在的文件夹?

如何在一个命令中查找文件并复制到不存在的文件夹?

例如:

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

相关内容