如何递归地将所有文件(不包括文件夹)复制到一个目标文件夹中?

sam*_*les 3 mac terminal cp

我有几个文件夹,比如/music/1/a.mp3/music/2/b.mp3

所有文件名本身都保证不同。

有没有办法,可能使用终端,将这些文件复制到/musicTemp/排除文件夹?

换句话说,上面两个例子的结果应该是:

/music/1/a.mp3
/music/2/b.mp3
Run Code Online (Sandbox Code Playgroud)

进入:

/musicTemp/a.mp3
/musicTemp/b.mp3
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 6

find命令将查找指定模式 (-name) 的所有文件,在本例中为特定文件类型:*.mp3. -exec使 find 后面的所有参数都作为命令的参数,直到;遇到由 of 组成的参数(最后,使用字面转义以防止 shell 扩展)。在这种情况下,我们希望执行的命令是cp对匹配模式 ( {}) 的文件进行文件复制 ( )并将这些文件复制到/destination_dir. 这个命令应该可以解决问题:

find /music -name "*.mp3" -type file -exec cp {} /destination_dir \;
Run Code Online (Sandbox Code Playgroud)