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

У меня есть несколько папок, которые содержат подпапки, такие как 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, взятый отсюда .

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}/*

  • Вызов java из Bash: «Невозможно выполнить двоичный файл»
  • Как объединить все файлы в заданном каталоге по дате, где я хочу, чтобы самый новый файл был сверху?
  • Запустить сценарий ожидания из другой оболочки
  • Для цикла для зависания на нескольких страницах с API
  • Использование cut / awk / sed с двумя разными разделителями
  • Делайте работу «читать», когда не фокусируетесь на терминале
  • Найти родителя процесса
  • Sh Script с использованием ftp для размещения списка файлов
  • список графических процессов из терминала
  • Как определить функцию Bash, которая может использоваться различными скриптами
  • значение переменной оболочки для цикла, отличного от цикла
  • Удалить строку с помощью> и forward-slash из xml-кода
  • Interesting Posts

    Инструмент для экранирования всех кавычек в строке / файле

    Как работать с файловой системой Linux?

    Как создать Module.symvers?

    Как проверить выбор debconf для не установленного пакета?

    Используются ли изменения в crontab, когда файл сохраняется, или когда редактор закрыт?

    Не удалось запустить Gnome после отказа от файла-rc

    Как разделить переменную $ 0, чтобы найти каталог и относительные пути в bash?

    Нагрузка на устройства initramfs на dist-upgrade

    Как захватить аудио с интерактивных веб-страниц с помощью VLC?

    Как выполнить резервное копирование и сравнить разрешения файлов?

    Почему я должен вызывать mknod извне, а не непосредственно в моем драйвере?

    URL вместо файла в параметрах командной строки linux

    Отфильтровать несколько элементов из вывода длинной команды

    В каких дистрибутивах Linux есть GNOME в качестве менеджера настольных компьютеров по умолчанию?

    Трубопровод находит результаты в другой команде

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