В дистрибутиве perl4 был скрипт rename. Сейчас, видимо, живет уже своей отдельной жизнью - только что с большим удивлением обнаружил, что в Ubuntu он установлен по умолчанию (я так и таскаю за собой файло из 4.19 :) http://www.tecmint.com/rename-multiple-files-in-linux/
Ну, там у тебя весь перл в распоряжении, так что и system и s///e доступны, да и просто произвольный код на крайний случай:
rename -n '/file(\d{2})\.txt/ or return; return if $1 % 2 == 0; $_= sprintf "foo%02d.txt", $1+1;' * Я не то чтоб призываю так делать :), тут уж лучше честный шеловский for написать, наверно.
честный шелловский (bash?) for завязан на * (шелловский глоб), который в сложных случаях приходится завязывать на множество внешних команд, которые в случе zsh решаются модификаторами глоба, которые работают в контексте самого процесса, т.е. в случае приведённого "сдвига" файлов обратно сдвигаются просто сменой модификатора:
Comments 4
Reply
сортировка файлов бедна, правильный shift набора файлов сделать сложно:
# touch file{01..05}.txt
# zmv -fQ 'file([[:digit:]]##).txt(On)' 'file$(print -f "%02d" $(($1+1))).txt'
# ls
# file02.txt file03.txt file04.txt file05.txt file06.txt
#
Reply
rename -n '/file(\d{2})\.txt/ or return; return if $1 % 2 == 0; $_= sprintf "foo%02d.txt", $1+1;' *
Я не то чтоб призываю так делать :), тут уж лучше честный шеловский for написать, наверно.
Reply
в сложных случаях приходится завязывать на множество внешних команд,
которые в случе zsh решаются модификаторами глоба, которые работают
в контексте самого процесса, т.е. в случае приведённого "сдвига" файлов
обратно сдвигаются просто сменой модификатора:
# touch file{01..05}.txt
# ls
file01.txt file02.txt file03.txt file04.txt file05.txt
# zmv -fQ 'file([[:digit:]]##).txt(On)' 'file$(print -f "%02d" $(($1+1))).txt'
# ls
file02.txt file03.txt file04.txt file05.txt file06.txt
# zmv -fQ 'file([[:digit:]]##).txt(on)' 'file$(print -f "%02d" $(($1-1))).txt'
# ls
file01.txt file02.txt file03.txt file04.txt file05.txt
#
У меня rename новый, который не перловый, и я не могу проверить, можно ли в нём
сортировать аргументы.
Reply
Leave a comment