我有一个包含子文件夹X1,X2和X3的父级编码器X ....每个这些子文件夹都包含音乐文件。我想将这些文件移动到主文件夹X并删除子文件夹X1,X2 ..等等。在终端中编写脚本以将文件从子文件夹移动到父文件夹
我该怎么做终端(mac)?
感谢上百万,
我有一个包含子文件夹X1,X2和X3的父级编码器X ....每个这些子文件夹都包含音乐文件。我想将这些文件移动到主文件夹X并删除子文件夹X1,X2 ..等等。在终端中编写脚本以将文件从子文件夹移动到父文件夹
我该怎么做终端(mac)?
感谢上百万,
您可能不需要整个脚本来做到这一点;它应该可以从命令行执行。假设您想要移动的所有音乐文件都以.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
...只要确保没有任何东西在你想保持在这样做之前的目录。
UPDATE:如果子目录没有系统地命名,还有另一种方法。请注意,这只会不出现错误的工作,如果你想从父目录中所有子目录的文件解压:
for i in `ls -l | egrep '^d'| awk '{print $10}'`; do mv $i/*.mp3 .; done
下,如果你有在顶级目录和一个错误的文件会发出一些错误信息有关无法删除“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
这将移动所有文件。如果要将文件限制到某个特定集合,请在第一个find
命令上使用-name
(或其他)限定符来过滤移动的文件。
伟大的,但子文件不仅三个他们很多(约100),他们没有命名X1 X2等......无论如何做不同的命名子目录?感谢您提前回答。 – 2013-02-15 15:00:04
查看上面的更新。它现在将查找X的所有子目录,而不管名称如何,并从这些目录中提取以.mp3结尾的所有文件。 – 2013-02-15 15:11:52