如何将文件从子目录复制到一个目录

如何将文件从子目录复制到一个目录

你好,我在 ubuntu 服务器上有一个装满音乐文件的文件夹。我试图将所有上述音乐文件 *.mp3/flac 复制到一个目录中,不包含子文件夹。

我在 rsync 中使用了这个命令,它在一定程度上起作用,但它不会查看包含所需文件的子文件夹 -

rsync ~/DIR/sub_dir/sub_dir2/*.mp3 ~/DIR/sub_dir/D+B

这有效,但只适用于 sub_dir2 中的 *.mp3 文件,而不适用于任何子文件夹!

rsync 实际上可以扫描子文件夹并把 *.mp3 文件移动到 D+B 文件夹吗?

谢谢

答案1

实际上可以rsync扫描子文件夹

使用递归选项:

-r--recursive 递归到目录

来源:rsync(1) - Linux 手册页

答案2

这取决于你的 rsync 实现

rsync --include=*.mp3 --exclude=* ~/DIR/sub_dir/sub_dir2/ ~/DIR/sub_dir/D+B

尝试一下,然后告诉我,因为许多变体可能效果一样好甚至更好

rsync --exclude=* --include=*.mp3 ~/DIR/sub_dir/sub_dir2/ ~/DIR/sub_dir/D+B

rsync --exclude=* --include=*/*.mp3 ~/DIR/sub_dir/sub_dir2/ ~/DIR/sub_dir/D+B

rsync --exclude=* --include=**/*.mp3 ~/DIR/sub_dir/sub_dir2/ ~/DIR/sub_dir/D+B

答案3

我最终使用了此命令,在包含子文件夹的文件夹中运行该命令,它将扫描 mp3/flac 文件并将它们复制到目标文件夹。如果要移动,请将 cp 替换为 mv。

find -iname '*.mp3' -exec cp {} ~/Downloads/Destination Directory/ \;

相关内容