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

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

a bb ccc abc emrls 

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

 00001 00002 00003 etc 

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

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

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]$ 
  • Запустите .zshrc при передаче команды через -c
  • Zsh preexec - Как обрезать все ведущие отступы от кодового блока?
  • Получить zsh не для завершения работы пользователей
  • Как отключить «auto cd» в zsh с помощью oh-my-zsh
  • Вкладка автозаполнения акцентированных символов с помощью oh-my-zsh не работает
  • Перенаправить вывод на полпути через скрипт и восстановить позже
  • Динамически обновлять список завершений в zsh
  • Присоединение файлов на диске
  • Показать содержимое символической ссылки
  • Что есть? "^ [B" backward-word "При попытке настроить ZSH?
  • исполняемый обертку, запустить исходный исполняемый файл из хвоста PATH
  • Interesting Posts

    Неожиданно истекают тайники NFS

    Полноэкранные игры блокируют рабочий стол после минимизации (Bumblebee + Nvidia)

    Как установить Debian с USB? (Использование полноразмерного изображения, а не netinstall)

    Конфигурация двойной загрузки с SSD и HDD

    Вставка избранных в консоль консоли

    настроить ddclient для возврата внутреннего ip вместо общедоступного ip

    Восстановить права доступа к файлам после копирования Windows

    Как получить REAL gcc (не тот, который хэшируется для clang) в MacOS?

    Сопровождение и переадресация

    Как проверить скорость сети прямо сейчас?

    Что такое PCI BAR номера 7,13,14,15 в Linux?

    Изменение поведения надстрочного ключа в текстовом редакторе (элементарный os)

    Лучший способ синхронизации файлов – копировать только СУЩЕСТВУЮЩИЕ файлы и только если NEWER, чем целевой

    Как просмотреть трафик через перенаправленный порт ssh?

    Глобальные ярлыки клавиш в Ubuntu 14.04

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