2013-02-15 3 views
1

У меня есть родительский фолдер X, который включает подпапку X1, X2 и X3 .... каждая из этих подпапок включает в себя музыкальные файлы. Я хотел бы переместить файлы в основную папку X и удалить подпапки X1, X2 ..etc.запись сценария в терминал для перемещения файлов из подпапок в родительскую папку

Как я могу это сделать в терминале (mac)?

Благодарит миллион заранее,

ответ

1

Вы, наверное, не нужен весь сценарий, чтобы сделать это; он должен выполняться из командной строки. Скажем, все музыкальные файлы, которые вы хотите переместить в .mp3, и ни один из других файлов (те, которые вы не хотите переместить) заканчиваются таким образом. Если это так, то вы можете использовать компакт-диск, чтобы попасть в каталог 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 
+0

Отлично, но в подфайле не только три, они много (около 100), и они не называются X1 X2 и т. Д. ... в любом случае, чтобы сделать это для разных названных подкаталогов? спасибо за ответ заранее. –

+0

См. Обновление выше. Теперь он найдет все подкаталоги X, независимо от имени, и извлечет все файлы, заканчивающиеся на .mp3, из этих каталогов. –

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 для фильтрации перемещаемых файлов.

Смежные вопросы