2016-10-24 8 views
0

У меня есть некоторые файлы: file1.txt, file2.txt, и я хотел бы переименовать их так: file1.something.txt и file2.something.txt Я посмотрел на некоторые подобные вопросы, и я придумал это:Пакетное переименование с командной строки

for i in file*.txt; do echo mv $i file*.something.txt; done 

но, к сожалению, выход:

mv file1.txt file*.something.txt 

mv file2.txt file*.something.txt 

и поэтому создается только 1 файл. Может ли кто-нибудь помочь? (я использую Macbook Air, я не уверен, если это уместно) Большое спасибо

ответ

0

Попробуйте это:

rename -n 's/\.txt/something.txt' * 

(удалить ключ -n, когда ваши тесты OK)

warning http://pix.toile-libre.org/upload/original/1377510865.pngЕсть другие инструменты с тем же именем, которые могут быть или не быть в состоянии сделать это, поэтому будьте осторожны.

Если вы выполните следующую команду (GNU)

$ file "$(readlink -f "$(type -p rename)")" 

и у вас есть результат, как

.../rename: Perl script, ASCII text executable 

и не содержащие:

ELF 

затем это, кажется, правильный инструмент =)

Если нет, то, чтобы сделать его по умолчанию (обычно уже случай) на Debian и производной как Ubuntu:

$ sudo update-alternatives --set rename /path/to/rename 

(заменить /path/to/rename на пути вашей perl's rename команда.


Если у вас нет этой команды, поиск диспетчера пакетов, чтобы установить его или do it manually


Последнее, но не менее, этот инструмент был изначально написан Ларри Уолл, папа на Perl.