Вы, наверное, не нужен весь сценарий, чтобы сделать это; он должен выполняться из командной строки. Скажем, все музыкальные файлы, которые вы хотите переместить в .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
Отлично, но в подфайле не только три, они много (около 100), и они не называются X1 X2 и т. Д. ... в любом случае, чтобы сделать это для разных названных подкаталогов? спасибо за ответ заранее. –
См. Обновление выше. Теперь он найдет все подкаталоги X, независимо от имени, и извлечет все файлы, заканчивающиеся на .mp3, из этих каталогов. –