Как переименовать несколько файлов с разными именами в file1, file2, file3 и т. Д.? [дубликат]

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

Допустим, у меня в папке есть эти файлы:

cat.txt
dog.txt
house.txt
tree.txt

Я хочу переименовать их все примерно так:

file1.txt
file2.txt
file3.txt
file4.txt

Is что можно сделать через командную строку?

Я видел только вопросы о переименовании файлов, имеющих какой-то шаблон, например rename dog1.txt , dog2.txt - > cat1.txt , cat2.txt .

4
задан 22 July 2017 в 07:39

2 ответа

Использовать rename утилита, чтобы сделать это:

rename -n '$_ = sprintf "file%d.txt", ++$::count' *

Примечания

  • -n заставляет команду показать Вам, что произойдет, если Вы выполните ее. Если вывод был тем, без чего Вы хотите, выполняете его -n на самом деле переименовать файлы.
  • замените * с тем, что Вы хотите переименовать, например: dog*.txt только переименовать dog1.txt, dog2.txt ...кому: file1.txt, file2.txt, и т.д.
  • $_ вход по умолчанию (имена файлов), которые мы должны изменить.
  • использование = мы изменяем его
  • с sprintf мы определяем схему, запущенную file сопровождаемый %d означает число и законченный к .txt.
  • с помощью номер (%d) присвоят ++$::count, который является простым счетчиком, выполненным с помощью итераций после того, как каждый переименует.

Идея прибывает отсюда.

5
ответ дан 1 December 2019 в 09:13

Это может быть сделано, но с некоторыми протестами. Вы заявили, что "... эти файлы [находятся] в моей папке", которая была бы одним из таких протестов. Мы могли использовать globstar и выполните итерации по расширенным именам файлов:

$ c=0;for f in *; do ((c++));  echo "$f" "--->" file"$c".txt ; done                            
cat.txt ---> file1.txt
dog.txt ---> file2.txt
house.txt ---> file3.txt
tree.txt ---> file4.txt

Конечно, Вы могли всегда идти "ручным" путем через a list.txt, где можно сохранить список имен файлов и считать тот файл через while IFS= read -r ; do ... done < list.txt

$ c=0; while IFS= read -r f; do ((c++)); echo "$f" file"$c" ; done < input.txt                 
cat.txt file1
dog.txt file2
tree.txt file3

Конечно, эта тема списка может быть расширена во многих отношениях - csv списки, json файлы, списки значения ключа - Вы называете ее. Существует много вопросов о них онлайн. Существует, конечно, другой выбор, который необходимо сделать, как дают полный путь файлам или выполняют все в том же каталоге как список.

Наконец, я уже намекнул на списки значения ключа. С bash и другие более современные языки сценариев как Python или Perl, у Вас мог быть хеш (или словарь) со списком файлов и соответствующего нового имени, которое Вы хотите, чтобы файл имел.

2
ответ дан 1 December 2019 в 09:13

Другие вопросы по тегам:

Похожие вопросы: