Я хочу переименовать кучу файлов, которые называются IMG0189.jpeg IMG0190.jpeg и т. д., например, IMG01.jpeg IMG02.jpeg и т. д. соответственно. Есть ли способ сделать это с помощью команды rename? Или что-нибудь еще? Я пробовал читать руководство, но он очень краток и не дает никакого представления о смещении чисел.
Как насчет
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
(команда move / rename) -n2
, это означает, что он будет передавать 2 из них за раз NB, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с числа, отличного от 1, вам нужно управлять параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
Как насчет
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
(команда move / rename) -n2
, это означает, что он будет передавать 2 из них за раз NB, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с числа, отличного от 1, вам нужно управлять параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
Как насчет
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
(команда move / rename) -n2
, это означает, что он будет передавать 2 из них за раз NB, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с числа, отличного от 1, вам нужно управлять параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
Как насчет
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
(команда move / rename) -n2
, это означает, что он будет передавать 2 из них за раз NB, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с числа, отличного от 1, вам нужно управлять параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
Как насчет
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
(команда move / rename) -n2
, это означает, что он будет передавать 2 из них за раз NB, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с числа, отличного от 1, вам нужно управлять параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
Как насчет
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
(команда move / rename) -n2
, это означает, что он будет передавать 2 из них за раз NB, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с числа, отличного от 1, вам нужно управлять параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
Как насчет
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
(команда move / rename) -n2
, это означает, что он будет передавать 2 из них за раз NB, это предполагает, что ваши исходные имена файлов не содержат пробелов.
Если вы хотите начать с числа, отличного от 1, вам нужно управлять параметрами seq; например,
COUNT=`ls | wc -l` ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
seq
позволяет автоматически набирать необходимое количество нулей для сохранения последовательности, которую вы просили, так что это уже покрыто. См. Править для начала с разным номером.
– Adrian
18 June 2012 в 13:59