Сценарий оболочки для перемещения файлов между двумя каталогами

У меня есть несколько папок, которые содержат подпапки, такие как JAN / Jan / FEB / Feb / MAR / Mar / и т. Д. Мне нужно переместить все файлы из JAN / * в Jan /, FEB / * в Feb и т. Д. Как мне достичь этого с помощью сценария оболочки?

редактировать
Спасибо @Costas за то, что указали мне в правильном направлении. Его решение будет работать с Bash 4 и выше. Поскольку у меня был v3, я в конечном итоге использовал это.

for DIR in [AZ][AZ]*/ do NEWDIR=`echo "$(echo "$DIR" | sed 's/.*/\L&/; s/[az]*/\u&/g')"` mv $DIR/* $NEWDIR done 

sed, взятый отсюда .

  • ksh + удалить номер из строки
  • Создание мастер-процесса и подключение подчиненных процессов
  • Как повторить запрос пользователю в сценарии оболочки?
  • Строки из двух разных массивов не совпадают?
  • Удалить строку с пробелами и цитатами из xml-файла
  • bash script «Нет такого файла ...»
  • как создать скрипт для создания резервной копии gpg?
  • переменная pass в ssh
  • 2 Solutions collect form web for “Сценарий оболочки для перемещения файлов между двумя каталогами”

    Для современного bash (который поддерживает изменение случая):

     for dir in [AZ][az]*/ do mv -t "$dir" ${dir^^}/* done 

    В неподдерживаемых версиях вы можете использовать tr | sed | … вместо этого.

    Используя prename в Perl утилиту rename которая входит в стандартную комплектацию Debian, но известна как prename в некоторых других системах, вы можете сделать это с помощью одной команды

     ( LC_ALL=C; prename -v 's!^([AZ])([AZ]{2}/)!$1\L$2!' [AZ][AZ][AZ]/* ) 

    Это заставляет локаль C , которая гарантирует совпадение имени файла, что позволяет шаблону файла [AZ][AZ][AZ] забирать только месяцы с заглавными буквами. Замена свопит три заглавные буквы для заглавной буквы, за которой следуют две строчные буквы.

    Если вы предпочитаете, вы можете поменять шаблон имени файла [AZ][AZ][AZ]/* для явного списка всех двенадцати месяцев: {JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC}/*

    Linux и Unix - лучшая ОС в мире.