Я хочу переименовать группу файлов, которые называются IMG0189.jpeg IMG0190.jpeg и т. Д., Во что-то вроде IMG01.jpeg IMG02.jpeg и т. Д. Соответственно. Есть ли способ сделать это с помощью команды переименования? Или что-нибудь еще? Я попытался прочитать руководство, но оно очень краткое и не дает представления о сдвиге чисел.
Как насчет
ls > /tmp/list ; seq -w `ls | wc -l` | paste /tmp/list - | awk -F\\t '{ print $1, "IMG"$2".jpeg"}' | xargs -n2 mv
/tmp/list
seq
число чисел, дополненное нулями, равно количеству файлов для STDOUT wc
(количество слов) в режиме «линий» paste
последовательность чисел из предыдущей команды в правой части списка файлов из /tmp/list
TAB
awk
для переформатирования этих двух полей \t
- первая косая черта должна выходить из второго) $1
, имя исходного файла печатается как есть $2
, порядковый номер, напечатанный с префиксом IMG и суффикс .jpeg xargs
, передайте пары аргументов в mv
(команда перемещения / переименования) -n2
означает, что он пропустит 2 из них одновременно Обратите внимание, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с номера, отличного от 1, вам нужно манипулировать параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST