2016-09-13 3 views
1

Когда я делаю латексные документы, создается несколько файлов с тем же базовым именем, но с другим расширением. Если я хочу переименовать исходный файл, я должен также переименовать каждый другой файл в папке.Переименуйте все файлы с таким же базовым именем

Есть ли способ сделать следующее?

mv file_basename.* file_newname.[whatever was globbed] 

ответ

1

Рассмотрим каталог с этими файлами:

$ ls 
file_basename.a file_basename.b file_basename.c 

Теперь давайте запустим Perl-rename утилита для переименования файлов:

$ prename 's/file_basename/file_newname/' * 
$ ls 
file_newname.a file_newname.b file_newname.c 

Как вы можете видеть все файлы имеют новое имя.

prename, иногда называемый rename, является частью пакета perl.

Обратите внимание, что некоторые дистрибутивы Linux устанавливают по умолчанию другую и несовместимую версию. Если у вас есть один из них, вышеуказанная команда не будет работать. Для получения дополнительной информации о том, какие дистрибутивы поставляются с prename или как установить его в вашем дистрибутиве, см. here.

0

Вот простой Баш скрипт, который делает это (давайте назовем его rename-prefix):

#!/bin/bash 

basename="$1" 
newname="$2" 
for file in "$basename"*; do 
    mv -iv -- "$file" "$newname${file#$basename}" 
done 

Он должен быть выполнен из каталога, где файлы находятся. Вы запускаете это следующим образом:

rename-prefix file_basename. file_newname.