将文件从多个子目录复制到同一目标目录

将文件从多个子目录复制到同一目标目录

主目录中有近 300 个子目录。现在我们想用一个命令将子目录中的所有文件复制到目标目录。可以吗?

Main Directory
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg
     SubDirectory
        SubsubDirectory1
           xx.jpg
           xx,jpg
        SubsubDirectory2
           xx.jpg
           xx,jpg

我发现下面的命令可以工作。但在命令中提及每个子目录名称很困难。

cp "Main Directory"/*/Subsubdirectory1/* destdir

答案1

命令find是执行此类操作的好工具,最好与 结合使用xargs。尝试以下操作:

find "Main Directory" -type f -print0 | xargs -0 cp -t destdir

并查看man find,了解其工作原理的详细信息。man xargsman cp

答案2

像这样,使用递归模式 (**) :

shopt -s globstar

cp -l **/*.jpg 'Main Directory'/

我使用-l开关来避免浪费磁盘空间,它创建硬链接

相关内容