Вопрос Использование подстановочных знаков для массового переименования? [Дубликат]


На этот вопрос уже есть ответ:

Я понял, что я назвал кучу файлов по-одному, поэтому я хотел переименовать любой файл, начинающийся с «1», в одно и то же, кроме как начиная с 2.

Например mv 1.4.5.txt 2.4.5.txt или mv 1-chart.jpg 2-chart.jpg и т.п.

Я пытался mv 1* 2* но это не было принято, потому что оно интерпретирует 2* как каталог.


3
2017-10-12 23:29


происхождения


Повторно открыть голосование: я чувствую, что отсутствует общий подход, например rename 's/^[0-9]*/$&+1/e' file было бы. - dessert
@dessert: принятый ответ на связанный вопрос касается чего-то очень похожего. Я голосую, чтобы держать это закрытым. - David Foerster


ответы:


Подстановочные знаки не будут этого делать. Посмотрите на результат echo mv 1* 2*, Лучший способ - (man rename):

rename 's/^1/2/' 1*

4
2017-10-12 23:37



Чтобы сделать это динамически, используйте rename 's/^[0-9]*/$&+1/e' file вместо этого это увеличит число в начале имени файла на единицу. К сожалению, вопрос закрыт, поэтому я не могу добавить для этого еще один ответ. - dessert
@dessert Как насчет «переименовать любой файл, начинающийся с« 1 », к тому же, кроме начала с 2." говорит «увеличивать число в начале»? - waltinator


Вы можете использовать подстановочные знаки таким образом, если вы установите mmv (хотя они должны быть указаны, так что они интерпретируются mmv а не оболочкой), а подстановочный знак замены принимает форму #n повторить замену nго шаблон из шаблона:

Usage: mmv [-m|x|r|c|o|a|l] [-h] [-d|p] [-g|t] [-v|n] [from to]

Use #[l|u]N in the ``to'' pattern to get the [lowercase|uppercase of the]
string matched by the N'th ``from'' pattern wildcard.

A ``from'' pattern containing wildcards should be quoted when given
on the command line. Also you may need to quote ``to'' pattern.

Use -- as the end of options.

Так, например,

$ mmv -n -- '1*' 2#1
1.sh -> 2.sh : delete old 2.sh? n
1-chart.jpg -> 2-chart.jpg
1.4.5.txt -> 2.4.5.txt
1.csv -> 2.csv

(The -n опция позволяет выполнить сухой запуск - удалите его, чтобы фактически переименовать файлы.)


1
2017-10-12 23:54