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



我有一个很大的音乐库(>20000首歌曲),我正试图从我的Mac转移到我的PC。组成这个库的单个文件是在我的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),但在大多数情况下它们是相同的。希望这不会影响问题的解决。我对命令行一窍不通,如果任何建议的解决方案能比平时更"居高临下"一点,我会非常感激。如果可能的话,把我解释成5岁。

你可以打开Finder并搜索所有。mp3文件,然后将它们放入iTunes窗口中重新处理。它可能会留下一些空文件夹,但只要你没有强迫症,你就会拿回你的音乐。

使用以下脚本(从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. 通过在其他地方复制一些目录并在它们上运行之前尝试它来测试它。

相关内容

最新更新