Организация папок

У меня есть несколько папок («Амазонка», «Нигер», «Рейн», ...). Внутри каждого из них у меня есть несколько подпапок («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 и перемещаюсь внутри каждой вложенной папки, но она не очень эффективна, и мне может понадобиться дополнительная жизнь, чтобы закончить эту задачу таким образом! Поэтому любая помощь или подсказка будут очень благодарны. Спасибо вам большое!

1
задан 2 August 2015 в 17:04

1 ответ

Вы должны попробовать написать что-то похожее на это:

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]

0
ответ дан 23 May 2018 в 18:34

Другие вопросы по тегам:

Похожие вопросы: