LINUX.ORG.RU

Порядковые номера в именах файлов

 ,


0

2

Есть много файлов. Часть из них имеет имена:

...
015701_что-то_еще_про_содержание_файла.расширение
015702_что-то_еще_про_содержание_файла.расширение
015703_что-то_еще_про_содержание_файла.расширение

А другая часть — с именами без порядковых номеров.
Технологически нужно, чтобы все остальные файлы приобрели имена:

015704_уже_данное_ранее_имя.расширение
015705_уже_данное_ранее_имя.расширение
015706_уже_данное_ранее_имя.расширение

и т.д. То есть к каждому имени спереди добавить порядковый номер, начиная с 015704.

Как это автоматизировать простейшим способом?

Ответ на: zsh от salsa

Требует переключения на zsh? А в bash нельзя аналогичным способом?

LittleBin
() автор топика
Ответ на: комментарий от LittleBin

Требует переключения на zsh?

Ну да. Еще нужно сделать

autoload -Uz zmv
alias zmv='noglob zmv'
.

salsa
()
Последнее исправление: salsa (всего исправлений: 1)
Ответ на: комментарий от LittleBin

Зачем переключаться? В скрипте укажи что это скрипт для zsh.

targitaj ★★★★★
()

Вот такой велосипед.

Создаем файлы:

for i in '100-f' '200-f' '300-f' 'f25' 'f36'  ;do touch $i; done

Печатаем, кого и куда переименовывать

ls . | grep -P '^[^\d].*' | awk 'BEGIN {count=15704;} {printf "mv \"%s\" \"%06d_%s\"\n",$1, count,$1; count += 1;}'

Исполняем

ls . | grep -P '^[^\d].*' | awk 'BEGIN {count=15704;} {printf "mv \"%s\" \"%06d_%s\"\n",$1, count,$1; count += 1;}' | sh

Конечно же, если у файлов есть хитрые имена, с пробелами-точками-кавычками, то вылезут проблемы.

anonymous
()

Браво! Помимо собственно решения вопроса, получил пучок замечательных идей. Спасибо!!

LittleBin
() автор топика
Ответ на: комментарий от anonymous
$  prename -n 'our $n;  if (/^[^0-9]/) {$n++; my $k=$n+15703; s/^/$k-/;}' aaa 123-kuku bbb ccc 234-mumu
aaa renamed as 15704-aaa
bbb renamed as 15705-bbb
ccc renamed as 15706-ccc
anonymous
()
Ответ на: комментарий от anonymous

В Debian вроде просто rename.
вроде

"вроде" это главное слово в твоем предложении.

$ dpkg -S /usr/bin/prename
perl: /usr/bin/prename

$ dpkg -S /usr/bin/file-rename
rename: /usr/bin/file-rename

ls -l /usr/bin/rename
lrwxrwxrwx ... /usr/bin/rename -> /etc/alternatives/rename

$ ls -l /etc/alternatives/rename
lrwxrwxrwx ... /etc/alternatives/rename -> /usr/bin/file-rename
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.