Как заменить расширение файла

Это соглашение, используемое как для сохранения уникальности имен файлов, так и для управления порядком выполнения скриптов. В общем, каталоги xx.d сканируются чем-то, выполняющим моральный эквивалент для файла в /etc/grub.d/*; do ... , а числовые префиксы определяют порядок, отличный от алфавитного. Могут существовать специфические для приложения стандарты для 4x_foo и 9x_foo , но они не соответствуют всем каталогам xx.d.

2
17.12.2018, 17:35
2 ответа
old_name=run_fix.bash
new_name=${old_name%.bash}.in_hold.txt

printf 'New name: %s\n' "$new_name"

Это удалит суффикс имени файла .bashиз значения $old_nameи добавит .in_hold.txtк результату этого. Все это будет присвоено переменной new_name.

Расширение ${variable%pattern}для удаления кратчайшей строки суффикса, соответствующей шаблону pattern, из значения $variableявляется стандартным расширением параметра .

Для замены любого суффикса имени файла (, т. е. всего, что следует после последней точки в имени файла):

new_name=${old_name%.*}.new_suffix

Шаблон .*будет соответствовать последней точке, а все после нее (будет удалено ). Если бы вы использовали %%вместо %, самая длинная подстрока, соответствующая шаблону, была бы удалена (, в этом случае вы бы удалили все после первого точка в строке ). Если строка не содержит точек, она остается неизменной.

21
27.01.2020, 21:50

Попробуйте команду renameЛарри Уолла. Не устанавливается по умолчанию во всех системах, и в некоторых есть другая команда с таким именем. Он определенно доступен для систем на основе Debian.

renameэто sedдля имен файлов.

0
27.01.2020, 21:50

Теги

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