批量递归将扩展名文件移动到使用该扩展名命名的文件夹

时间:2017-08-17 16:54:46

标签: bash recursion move

我有mp3和flac类型的文件。让我们说我的基本目录结构是

/music/artist/album

我已经(已经)制作了

/music/artist/album/flac/
/music/artist/album/mp3/

使用递归批处理操作。

我想遍历所有/music/并执行以下操作:

  1. 如果/music/artist/album/有mp3,请将其移至/music/artist/album/mp3/
  2. 如果/music/artist/album/有瑕疵,请将其移至/music/artist/album/flac/
  3. 有些文件夹有mp3和flac。寻找脚本文件或命令行解决方案

3 个答案:

答案 0 :(得分:3)

find /music/ -name '*.mp3'  -execdir mv {} mp3/  \;
find /music/ -name '*.flac' -execdir mv {} flac/ \;

-execdir在当前文件的目录中运行指定的命令。这使您可以使用相对于当前艺术家/专辑的mp3/flac/目录。

答案 1 :(得分:0)

这里有一种方法:

find /music  -type f -name "*.mp3" | xargs mv $1 /music/artist/album/mp3/
find /music  -type f -name "*.flac" | xargs mv $1 /music/artist/album/flac/

希望它适合你。

问候!

答案 2 :(得分:0)

将当前目录更改为音乐文件所在的位置,然后将mp3移至mp3文件夹并将flacs移至flac文件夹。

cd /music/artist/album/
mv *.mp3 mp3/
mv *.flac flac/