1

我有一个父文件夹 X ,其中包括子文件夹 X1 、 X2 和 X3 .... 这些子文件夹中的每一个都包含音乐文件。我想将这些文件移动到主文件夹 X 并删除子文件夹 X1、X2 ..etc。

我怎样才能在终端(mac)中做到这一点?

预先感谢一百万,

4

2 回答 2

1

您可能不需要完整的脚本来执行此操作;它应该可以从命令行执行。假设您要移动的所有音乐文件都以 .mp3 结尾,并且没有其他文件(您不想移动的文件)以这种方式结束。如果是这种情况,您可以使用 cd 进入目录 X,然后运行:

mv X1/*.mp3 .

...等等其他两个子目录。
或者,如果你想同时处理所有文件,你可以这样做:

i=0; while [ $i -lt 3 ]; do i=$(( $i + 1 )); mv X$i/*.mp3 .; done

其中“-lt”后面的数字是您要从中提取文件的最终目录的后缀。

完成后,您可以使用

rmdir X1

如果目录为空,则删除目录,或

rm -r X1

如果他们不是。您也可以像这样将其构建到上面的单行中:

i=0; while [ $i -lt 3 ]; do i=$(( $i + 1 )); mv X$i/*.mp3 .; rm -r X$i; done

...只需确保在您要保留的这些目录中没有任何其他内容。

更新:如果子目录没有系统地命名,还有另一种方法。请注意,如果您想从父目录的所有子目录中提取文件,这只会在没有错误的情况下工作:

for i in `ls -l | egrep '^d'| awk '{print $10}'`; do  mv $i/*.mp3 .; done
于 2013-02-15T02:10:15.740 回答
0

如果您在顶级目录中有任何文件并且有关无法删除“X”的错误,以下将发出一些错误消息,但可以安全地忽略它们:

find X -type f -exec mv {} X \;    # Move all files into X
find X -depth -type d -exec rmdir {} \;  # Remove all subdirectories of X

这将移动所有文件。如果要将文件限制为某个集合,-name请在第一个命令上使用(或其他)限定符find来过滤移动的文件。

于 2013-02-15T17:18:06.410 回答