Один вкладыш для переименования группы файлов - PullRequest
11 голосов
/ 26 марта 2012

Я искал однострочник командной строки для переименования группы файлов за один снимок.

pattern1.a  pattern1.b pattern1.c ...

После выполнения команды я должен получить

pattern2.a  pattern2.b pattern2.c ...

Ответы [ 3 ]

13 голосов
/ 26 марта 2012
for i in pattern1.*; do mv -- "$i" "${i/pattern1/pattern2}"; done

Перед тем как запустить его, вставьте echo перед mv, чтобы посмотреть, что он сделает .

11 голосов
/ 26 марта 2012

Если вы используете Linux, у вас также может быть сценарий perl в / usr / bin / rename, который может переименовывать файлы на основе более сложных шаблонов, чем позволяет глобализация оболочки.

/ usr / bin/ Переименование в одной из моих систем задокументировано здесь .Его можно использовать так:

rename "s/pattern1/pattern2/" pattern1.*

Количество других сред Linux , похоже, имеет другое rename, которое можно использовать так:

rename pattern1 pattern2 pattern1.*

Проверьте man rename в вашей системе для деталей.

1 голос
/ 26 марта 2012

Множество способов снять шкуру с этой кошки. Если вы предпочитаете, чтобы ваш шаблон был регулярным выражением, а не файловым глобусом, и вы хотите сделать это рекурсивно, вы можете использовать что-то вроде этого:

find . -print | sed -ne '/^\.\/pattern1\(\..*\)/s//mv "&" "pattern2\1"/p'

Как Керрек предложил в своем ответе, этот сначала показывает вам, что он будет делать. Передайте вывод через оболочку (т.е. добавьте | sh в конец), как только вы освоитесь с командами.

Это работает для меня:

[ghoti@pc ~]$ ls -l foo.*
-rw-r--r--  1 ghoti  wheel  0 Mar 26 13:59 foo.php
-rw-r--r--  1 ghoti  wheel  0 Mar 26 13:59 foo.txt
[ghoti@pc ~]$ find . -print | sed -ne '/^\.\/foo\(\..*\)/s//mv "&" "bar\1"/p'
mv "./foo.txt" "bar.txt"
mv "./foo.php" "bar.php"
[ghoti@pc ~]$ find . -print | sed -ne '/^\.\/foo\(\..*\)/s//mv "&" "bar\1"/p' | sh
[ghoti@pc ~]$ ls -l foo.* bar.*
ls: foo.*: No such file or directory
-rw-r--r--  1 ghoti  wheel  0 Mar 26 13:59 bar.php
-rw-r--r--  1 ghoti  wheel  0 Mar 26 13:59 bar.txt
[ghoti@pc ~]$ 
...