Как мне обойтись mv original.filename new.original.filename
без повторного ввода исходного имени файла?
Я мог бы представить, что смогу сделать что-то подобное, mv -p=new. original.filename
или, возможно, mv original.filename new.~
или что-то еще, но я не вижу ничего подобного после просмотра man mv
/ info mv
pages.
Конечно, я мог бы написать для этого сценарий оболочки, но разве для этого нет команды / флага?
Вы можете использовать
rename(1)
команду:Изменить: если
rename
недоступно, и вам нужно переименовать более одного файла, сценарий оболочки может быть коротким и простым для этого. Например, чтобы переименовать все ,*.jpg
чтобыprefix_*.jpg
в текущем каталоге:источник
rename 's/(.*).example/$1/' *.example
спасли меня от скуки.$
в этом сценарии. So just's/(.*)/new.$1/'
rename
команда не работает на моей машине RHEL 6. Есть ли разные версии этой команды? Уfor ... done
меня сработало.Вы можете добиться совместимого с unix переименования нескольких файлов (с использованием подстановочных знаков), создав цикл for:
источник
${file%%}
делать? Похоже на просто $ {file}Я видел, как люди упоминали
rename
команду, но она обычно не доступна в системах Unix (в отличие от систем Linux, скажем, или Cygwin - в обоих случаях переименование является исполняемым файлом, а не сценарием). Эта версияrename
имеет довольно ограниченную функциональность:Он заменяет часть from в именах файлов на to , и пример, приведенный на странице руководства:
Это переименовывает foo1 в foo01, а foo10 в foo010 и т. Д.
Я использую Perl-скрипт под названием
rename
, который я первоначально выкопал из первого издания Camel book, около 1992 года, а затем расширил, чтобы переименовать файлы.Это позволяет вам написать любую команду Perl для замены или транслитерации для сопоставления имен файлов. В конкретном запрошенном примере вы должны использовать:
источник
pacman
использования:pacman -Sy perl-rename
. Затем добавьте к нему псевдоним в своем bashrc:alias rename='perl-rename'
'.html
к именам файлов, использование's/$/.html/'
- для удаленияtmp
отовсюду в именах файлов, использование's/tmp//g'
(найтиtmp
и везде ничем не заменить).Самый простой способ массового переименования файлов в каталоге:
источник
Если он открыт для модификации, вы можете использовать суффикс вместо префикса. Затем вы можете использовать завершение табуляции, чтобы получить исходное имя файла и добавить суффикс.
В противном случае нет, это не то, что поддерживается командой mv. Однако простой сценарий оболочки может справиться.
источник
В моем случае у меня есть группа файлов, которую нужно переименовать, прежде чем я смогу с ними работать. У каждого файла своя роль в группе и свой паттерн.
В результате у меня есть список таких команд переименования:
Попробуйте также:
Это создаст все комбинации с префиксами и суффиксами:
Другой способ решить ту же проблему - создать массив сопоставления и добавить префикс соответствия для каждого типа файла, как показано ниже:
источник
Bash скрипт массового переименования файлов
источник
Я знаю, что здесь есть отличные ответы, но я не нашел ссылки на обработку расширений файлов при добавлении суффикса.
Мне нужно было добавить суффикс _en ко всем
wav
файлам в папке перед расширением файла.Магия здесь:
%.*
for filename in *.wav; do mv $filename ${filename%.*}_en.wav; done;
Если вам нужно обрабатывать разные расширения файлов, проверьте этот ответ. Немного менее интуитивно понятный.
источник