我有几个文件夹,/music/1/a.mp3
例如/music/2/b.mp3
保证所有文件名本身都是不同的。
有没有办法,比如使用终端,将这些文件复制到/musicTemp/
排除文件夹中?
换句话说,上面两个例子的结果应该是:
/music/1/a.mp3
/music/2/b.mp3
进入:
/musicTemp/a.mp3
/musicTemp/b.mp3
答案1
该find
命令将查找指定模式 (-name) 的所有文件,在本例中为特定文件类型:*.mp3
。-exec
使 find 的所有后续参数都作为命令的参数,直到;
遇到由 组成的参数(最后,使用文字转义以防止 shell 扩展)。在本例中,我们希望执行的命令是文件复制 ( cp
),复制与模式 ( ) 匹配的文件{}
并将这些文件复制到/destination_dir
。此命令应该可以解决问题:
find /music -name "*.mp3" -type file -exec cp {} /destination_dir \;
答案2
如果你有安装了 Bash 4,你可以添加shopt -s globstar
到 .bash_profile 并运行:
cp /music/**/*.mp3 /musicTemp/