Переименование файлов в лексикографическом порядке с помощью числового шаблона, который последовательно увеличивается с фиксированным заполнением

У меня есть файлы, такие как

a bb ccc abc emrls 

Я хотел бы переименовать их так, чтобы после их сортировки (например, лексикографически) каждый файл получил следующее имя:

 00001 00002 00003 etc 

где # цифр для заполнения 0 задано априори, например, 6 в приведенном выше случае (при условии, что мы знаем, сколько цифр необходимо).

Поскольку мне очень нравится оболочка, это zsh , меня интересуют решения, которые извлекают выгоду из функций на zsh (возможно, используя zsh zmv ?). Меня также интересовали бы решения, совместимые с Bash.

  • Как экспортировать переменную среды из .sh-файла в zsh?
  • Как скопировать папки с неприятными именами, используя функцию оболочки
  • Как включить вывод скрипта в приглашение zsh
  • Почему zsh (oh-my-zsh) заполняет каталоги, которые не существуют?
  • Почему эта команда ffmpeg работает в bash, а не zsh?
  • zsh: Определяется словарь `key` ->` terminfo`
  • zsh псевдоним переопределяется каким-то образом
  • Параметр _path_files и compadd ignore-files
  • 2 Solutions collect form web for “Переименование файлов в лексикографическом порядке с помощью числового шаблона, который последовательно увеличивается с фиксированным заполнением”

    Вы можете использовать флаг расширения l для ввода номера слева.

     i=0; for x in *; do ((++i)); mv -- $x new/${(l:6::0:)i}; done 

    Существует относительно простой способ сделать это только с функциями POSIX: начните нумерацию на 1000001 (для 6 цифр) вместо 1 и отделите ведущую 1 . Он менее прост, но несколько символов короче.

     i=1000000; for x in *; do i=$((i+1)); mv -- "$x" new/${i#1}; done 

    Если вы хотите воспользоваться zmv , вы можете использовать арифметическое выражение, которое увеличивает i внутри заменяющего текста.

     i=0; zmv '*' '${(l:6::0:)$((++i))}' i=1000000; zmv '*' '${$((++i))#1}' 

    Добавьте квалификатор o glob, если вам нужно отсортировать файлы в другом порядке. С zmv вам нужно передать флаг -Q когда шаблон содержит квалификаторы glob.

    Надеюсь, этот снимок поможет вам.

     [centos@centos new]$ touch a bb ccc dddd eee f gh i [centos@centos new]$ touch abc emrls cdg sf [centos@centos new]$ touch ABC A BB CCC DD GI KLM kmna kabc mas nas san fin zoo [centos@centos new]$ \ls -1 a A abc ABC bb BB ccc CCC cdg DD dddd eee emrls f fin gh GI i kabc KLM kmna mas nas san sf zoo [centos@centos new]$ a=0; for i in *; do a=$(($a+1)); b=`printf "%06d" $a`; mv -v ${i} ${b}; done `a' -> `000001' `A' -> `000002' `abc' -> `000003' `ABC' -> `000004' `bb' -> `000005' `BB' -> `000006' `ccc' -> `000007' `CCC' -> `000008' `cdg' -> `000009' `DD' -> `000010' `dddd' -> `000011' `eee' -> `000012' `emrls' -> `000013' `f' -> `000014' `fin' -> `000015' `gh' -> `000016' `GI' -> `000017' `i' -> `000018' `kabc' -> `000019' `KLM' -> `000020' `kmna' -> `000021' `mas' -> `000022' `nas' -> `000023' `san' -> `000024' `sf' -> `000025' `zoo' -> `000026' [centos@centos new]$ 
    Interesting Posts

    Как добавить бесполезную случайную строку в команду linux, чтобы идентифицировать ее через ps?

    / bin / sh: определение функции импорта ошибок для `some-function '

    Интерфейс для Linux для диапазона IP для деления входящего трафика

    Ubuntu 16.04 bash – можно открыть два интерактивных окна терминала в одном скрипте?

    Использование хвоста для ежедневного файла журнала в Bash

    Какова среда выполнения, в которой выполняется `command ` в `exec command `?

    проблема при загрузке Linux-сервера: слишком много уровней символических ссылок

    Список каталогов, затем файлы – с одной командой?

    Регуляторы громкости наушников Громкость динамика в Acer NE46RS1 Проблема с компрессией ноутбука и громкости также

    Баш математика и файлы

    Загрузка в оболочку вместо графического интерфейса

    Преобразование json-объекта сопоставления в управляемую строку csv с использованием сценария bash

    Как эмулировать отправку нажатий клавиш через терминальную программу?

    Автоматическое резервное копирование и исключение определенных папок

    Сервер не загружается, паника ядра – не синхронизация

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