递归地将文件从一个目录复制到另一个目录

kal*_*npw 13 command-line music transfer cp copy

我所有的音乐都在一个文件夹中/media/kalenpw/MyBook/Music/ABunchOfOtherFoldersWithFilesInside。我想复制所有的 mp3,/media/kalenpw/HDD/Music所以我使用了:

cp -R /media/kalenpw/MyBook/Music/*.mp3 /media/kalenpw/HDD/Music
Run Code Online (Sandbox Code Playgroud)

然而,这只复制了根音乐文件夹中的 mp3,并没有打开任何艺术家子目录并复制这些文件。

我的印象-R是递归复制所有文件。我怎样才能实现上述目标?

tec*_*raf 23

用:

find /media/kalenpw/MyBook/Music/ -name '*.mp3' -exec cp {} /media/kalenpw/HDD/Music \;
Run Code Online (Sandbox Code Playgroud)

您的命令不起作用的原因是包含通配符 ( *.mp3) 的名称在命令运行之前被扩展,因此如果您有三个文件 ( 01.mp3, 02.mp3, 03.mp3) 您的有效命令是:

cp -R /media/kalenpw/MyBook/Music/01.mp3 /media/kalenpw/MyBook/Music/02.mp3 /media/kalenpw/MyBook/Music/03.mp3 /media/kalenpw/HDD/Music
Run Code Online (Sandbox Code Playgroud)

如您所见,-R在这种情况下没有任何影响。

  • 如果任何文件以“.MP3”结尾,我建议使用“-iname”而不是“-name”。 (2认同)

hee*_*ayl 5

您特别提到了要复制的*.mp3文件/目录,即使用任何以.mp3.

所以在结尾的文件.mp3/media/kalenpw/MyBook/Music/目录中,同样,任何在结束目录.mp3/media/kalenpw/MyBook/Music/会被复制,递归。如果没有这样匹配的文件/目录,则不会复制任何内容。

现在将所有.mp3文件从/media/kalenpw/MyBook/Music/recursivley复制到目录/media/kalenpw/HDD/Music/