Я искал однострочный интерфейс командной строки linux, чтобы переименовать кучу файлов за один снимок.
pattern1.a pattern1.b pattern1.c ...
Как только команда будет выполнена, я должен получить
pattern2.a pattern2.b pattern2.c ...
Я искал однострочный интерфейс командной строки linux, чтобы переименовать кучу файлов за один снимок.
pattern1.a pattern1.b pattern1.c ...
Как только команда будет выполнена, я должен получить
pattern2.a pattern2.b pattern2.c ...
for i in pattern1.*; do mv -- "$i" "${i/pattern1/pattern2}"; done
Прежде чем запускать его, вставьте echo
перед mv
, чтобы увидеть, что он будет делать.
Если вы используете Linux, у вас также может быть perl script at/usr/bin/rename, который cane переименовывает файлы на основе более сложных шаблонов, чем разрешает shell globbing.
/usr/bin/rename на одной из моих систем документируется здесь. Его можно использовать следующим образом:
rename "s/pattern1/pattern2/" pattern1.*
Число других сред Linux > похоже, имеет другой rename
, который может быть использован следующим образом:
rename pattern1 pattern2 pattern1.*
Подробнее о man rename
в вашей системе.
Множество способов кожи этой кошки. Если вы предпочитаете, чтобы ваш шаблон был регулярным выражением, а не файловым глобусом, и вы хотели бы сделать это рекурсивно, вы можете использовать что-то вроде этого:
find . -print | sed -ne '/^\.\/pattern1\(\..*\)/s//mv "&" "pattern2\1"/p'
Как предложил Керрек с его ответом, этот сначала показывает вам, что он будет делать. Выполните вывод через оболочку (т.е. Добавьте | sh
в конец), как только вам станет удобно с командами.
Это работает для меня:
[[email protected] ~]$ 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
[[email protected] ~]$ find . -print | sed -ne '/^\.\/foo\(\..*\)/s//mv "&" "bar\1"/p'
mv "./foo.txt" "bar.txt"
mv "./foo.php" "bar.php"
[[email protected] ~]$ find . -print | sed -ne '/^\.\/foo\(\..*\)/s//mv "&" "bar\1"/p' | sh
[[email protected] ~]$ 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
[[email protected] ~]$