Возможный дубликат:
Переименование нескольких файлов (изменение расширения)
Предположим, что в моем текущем/рабочем каталоге есть пять файлов:
file1.xvg
file2.xvg
file3.xvg
file1.eps
file2.eps
Есть ли способ переименовать все файлы в текущем/рабочем каталоге с расширением.xvgи дайте им новое расширение.текст(оставляя.epsфайлы отдельно)? Можно ли это сделать с помощью rename
, mv
, или mmv
возможно? Я использую Ubuntu Linux. Спасибо!
решение1
Для вашего конкретного вопроса эта команда будет работать. Убедитесь, что вы довольны предложенным переименованием, затем отпустите , -n
чтобы продолжить операцию.
rename -n 's/\.xvg$/.txt/' *.xvg
По сути, это означает, что для всех файлов с .xvg
расширением в текущем каталоге нужно найти файлы, которые заканчиваются $
на ( ), .xvg
и изменить эту часть имени на .txt
.
Более подробная информация и пример ниже.
Да, rename
команда сделает это за вас. Короткий пример, где я переименовываю все свои файлы с .html
расширением в .html_bak
, игнорируя другие файлы в каталоге.
Я бысильнорекомендуем использовать -n
опцию командной строкипервый(объясняется ниже), чтобы увидеть, какие изменения произойдут перед выполнением самой команды.
С чего я начинаю:
$ ls
a.html a.txt b.html htmlfile
средства -n
делают "пробный запуск"... просто показывают, что изменится, не меняйте ничего!
$ rename -n 's/\.html$/.html_bak/' *
a.html renamed as a.html_bak
b.html renamed as b.html_bak
Оригинальные файлы сохранились.
$ ls
a.html a.txt b.html htmlfile
А теперь по-настоящему:
$ rename 's/\.html$/.html_bak/' *
Файлы переименованы.
$ ls
a.html_bak a.txt b.html_bak htmlfile
В приведенных выше примерах я использую *
для указания файлов, которые следует учитывать при операции переименования. Я мог бы ограничить это .html
только файлами с расширением *.html
.
Для получения дополнительной информации обратитесь к странице руководства по переименованию.
решение2
Это можно сделать так:
rename 's/xvg$/txt/' *.xvg
Шаблон glob гарантирует, что *.xvg
будут затронуты только файлы.