Это соглашение, используемое как для сохранения уникальности имен файлов, так и для управления порядком выполнения скриптов. В общем, каталоги xx.d сканируются чем-то, выполняющим моральный эквивалент для файла в /etc/grub.d/*; do ...
, а числовые префиксы определяют порядок, отличный от алфавитного. Могут существовать специфические для приложения стандарты для 4x_foo
и 9x_foo
, но они не соответствуют всем каталогам xx.d.
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
Шаблон .*
будет соответствовать последней точке, а все после нее (будет удалено ). Если бы вы использовали %%
вместо %
, самая длинная подстрока, соответствующая шаблону, была бы удалена (, в этом случае вы бы удалили все после первого точка в строке ). Если строка не содержит точек, она остается неизменной.
Попробуйте команду rename
Ларри Уолла. Не устанавливается по умолчанию во всех системах, и в некоторых есть другая команда с таким именем. Он определенно доступен для систем на основе Debian.
rename
это sed
для имен файлов.