У меня есть несколько папок («Амазонка», «Нигер», «Рейн», ...). Внутри каждого из них у меня есть несколько подпапок («gfdl», «hadgem», «ipsl», ...). Каждая подпапка состоит из 5 подпапок (например, в «амазонке», подпапка «gfdl» состоит из 5 подпапок «amazon_gfdl», «amazon_gfdl1», ..., amazon_gfdl5); и другие подпапки следуют одной и той же структуре (например, в подпапке «amazon» «ipsl» состоит из 5 подпапок «amazon_ipsl», «amazon_ipsl1», «amazon_ipsl2», ... до «amazon_ipsl5».
У меня есть огромное количество папок, следующих за одним и тем же фреймом организации. Поэтому мой вопрос следующий:
Как организовать каждую папку и подпапку таким образом, чтобы в каждой подпапке («gfdl», hasgem "," ipsl ", ...), создаются 4 новых каталога (" 1 "," 2 "," 3 "," 4 "), а затем папка, например" amazon_gfdl "(уже присутствует в" gfdl ») копируется в каждом из этих новых каталогов и, наконец,« amazon_gfdl1 »перемещается в новый каталог« 1 »,« amazon_gfdl2 »перемещается в новый каталог« 2 »и т. д.!
В настоящее время я использую команду cp и перемещаюсь внутри каждой вложенной папки, но она не очень эффективна, и мне может понадобиться дополнительная жизнь, чтобы закончить эту задачу таким образом! Поэтому любая помощь или подсказка будут очень благодарны. Спасибо вам большое!
Вы должны попробовать написать что-то похожее на это:
for dir in */; do
echo "Moving into $dir"
cd "$dir"
for subDir in */; do
echo "Moving into $subDir"
cd "$subDir"
for num in 1 2 3 4; do
echo "Moving $dir_$sudDir$num to $num"
mv -vRi "$dir_$sudDir$num" "$num"
done
done
done
Я не тестировал это и не рекомендую запускать его, пока вы его не протестировали. Некоторые флагов mv не будут работать на Mac OSX из-за версии bash, которую он запускает, но он должен работать на Ubuntu.
Опять же - обходитесь с вышеуказанным кодом, пока он не сделает то, что вы хотите - вы можете хотите посмотреть в bash для циклов вообще или, возможно, с помощью команды find выполнить аналогичный блок кода в одной строке.
Связано: Как переименовать каталог через командную строку? [ ! d3]