
basename — это утилита командной строки, которая удаляет каталог и конечный суффикс из заданных имен файлов.
Использование basename Команда
Команда basename поддерживает два формата синтаксиса:
basename NAME [ SUFFIX ] basename OPTION... NAME...
basename принимает имя файла и выводит его последний компонент. При желании можно также удалить любой завершающий суффикс. Это простая команда, принимающая всего несколько параметров.
Самый простой пример — вывести имя файла без ведущих каталогов:
basename /etc/passwd
Вывод будет включать имя файла:
passwd
Команда basename удаляет все конечные символы / :
basename /usr/local/basename /usr/local
Обе команды дадут одинаковый результат:
local local
По умолчанию каждая строка вывода заканчивается символом новой строки. Чтобы завершить строки символом NUL , используйте опцию -z ( --zero ).
Несколько входов
Команда basename может принимать несколько имён в качестве аргументов. Для этого вызовите команду с опцией -a ( --multiple ), а затем укажите список файлов, разделённых пробелом.
Например, чтобы получить имена файлов /etc/passwd и /etc/shadow вам нужно выполнить:
basename -a /etc/passwd /etc/shadow
passwd shadow
Удаление конечного суффикса
Чтобы удалить любой конечный суффикс из имени файла, передайте суффикс в качестве второго аргумента:
basename /etc/hostname name
host
Обычно эта функция используется для удаления расширений файлов:
basename /etc/sysctl.conf .conf
sysctl
Другой способ удалить конечный суффикс — указать суффикс с помощью параметра -s ( --suffix=SUFFIX ):
basename -s .conf /etc/sysctl.conf
sysctl
Эта форма синтаксиса позволяет вам удалить любой конечный суффикс из нескольких имен:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl sudo
Пример
В следующем примере показано, как использовать команду basename внутри цикла bash for для переименования всех файлов, заканчивающихся на «.jpeg», в текущем каталоге путем замены расширения файла с «.jpeg» на «.jpg»:
for file in *.jpeg ; do mv -- " $file " " $( basename $file .jpeg ) .jpg" done
Если вы используете bash в качестве оболочки, то вместо вызова basename вы можете использовать функцию удаления конечного расширения с помощью Shell Parameter Expansion .
Заключение
Команда basename удаляет из имени любой начальный каталог и конечный суффикс.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства