如何批量移动文件夹在Mac上的一个子目录?

时间:2015-05-15 06:32:00

标签: macos batch-processing archive

我有一个大型音乐库(> 20000首歌曲),我正试图从我的Mac移动到我的电脑。构建此库的单个文件是在我的Mac上长时间收集的。所有这些都是从压缩档案中提取的,例如.zip或.rar。不幸的是,我用来提取这些文件的解包器程序在提取之前将它们全部放入新创建的文件夹中。因为这些档案都只是压缩文件夹,所以我现在有一堆嵌套在冗余目录中的文件。

例如,假设我提取了一个名为ABCDWXYZ.zip的存档。

这个档案本身只是文件夹ABCDWXYZ的压缩版本,里面是文件Track 1,Track 2等。但是,我使用的提取程序首先创建了一个名为ABCDWXYZ的新文件夹,然后继续提取归档到此文件夹中的内容,导致数千个路径名看起来像这样:

iTunes/ABCDWXYZ/ABCDWXYZ/Track 1.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 2.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 3.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 4.mp3
iTunes/ABCDWXYZ/ABCDWXYZ/Track 5.mp3
iTunes/QWERTY/QWERTY/Track 1.mp3
iTunes/QWERTY/QWERTY/Track 2.mp3
iTunes/QWERTY/QWERTY/Track 3.mp3
iTunes/QWERTY/QWERTY/Track 4.mp3

有没有办法将所有这些双重嵌套文件夹批量移动到一个目录中?在执行批处理移动之后,我希望生成的文件体系结构看起来像这样:

iTunes/ABCDWXYZ/Track 1.mp3
iTunes/ABCDWXYZ/Track 2.mp3
iTunes/ABCDWXYZ/Track 3.mp3
iTunes/ABCDWXYZ/Track 4.mp3
iTunes/ABCDWXYZ/Track 5.mp3
iTunes/QWERTY/Track 1.mp3
iTunes/QWERTY/Track 2.mp3
iTunes/QWERTY/Track 3.mp3
iTunes/QWERTY/Track 4.mp3

有关可能帮助您回答我的问题的文件的更多信息:

  • 所有文件都在一个文件夹(即iTunes)中。
  • 冗余文件夹的名称在每种情况下都不相同(这是因为我有时会在解压缩之前缩短存档的名称,导致类似/ iTunes / YUI / YUIOP / Track 1.mp3),但是大多数情况下他们是相同的。希望这不会影响问题的解决方案。
  • 我在命令行非常文盲,如果任何提议的解决方案比平常更“光顾”,我将非常感激。如果可能的话,像我一样解释。

非常感谢你。

2 个答案:

答案 0 :(得分:1)

您可以打开Finder并搜索所有.mp3文件,然后将它们放入iTunes窗口以重新处理它们。它可能会留下一些空文件夹,但只要您不是OCD,就可以恢复音乐了。

答案 1 :(得分:1)

使用此脚本(在iTunes目录中):

#!/bin/sh
IFS=$'\n'
for d in *
do
    if [ -d "$d" -a -d "$d"/"$d" ]; then
        echo Processing $d
        mv "$d"/"$d" "$d.tmp" || exit 2
        rm -rf "$d" || exit 3
        mv "$d.tmp" "$d" || exit 4
    fi
done

注:

  1. 这是未经测试的。 使用风险自负!
  2. 通过在其他地方复制某些目录并在您的音乐集上运行它之前对其进行测试来测试它。