Обзор
basename — это стандартная утилита, используемая для извлечения последнего компонента пути к файлу (имени файла или каталога). Опция `-z` завершает вывод нулевым символом вместо символа новой строки, что предотвращает проблемы, связанные со специальными символами, такими как пробелы, табуляции и символы новой строки, которые могут присутствовать в именах файлов при использовании с такими командами, как `find -print0` и `xargs -0`.
Основные возможности
- Извлечение имени файла/каталога из пути к файлу
- Поддержка вывода с завершением нулевым (null) символом (-z)
- Безопасная обработка имен файлов в скриптах
- Опциональное удаление суффикса
Основные опции
Команда basename относительно проста, но предлагает несколько полезных опций.
Формат вывода
Сгенерированная команда:
Комбинируйте команды.
Описание:
`basename` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Различные примеры использования basename -z.
Базовый вывод с завершением нулевым символом
basename -z "/home/user/my document.txt" | xargs -0 echo
Извлекает имя файла из пути к файлу и завершает его нулевым символом.
Удаление суффикса и завершение нулевым символом
basename -z "/path/to/archive.tar.gz" .tar.gz | xargs -0 echo
Извлекает имя файла из пути к файлу, удаляет указанный суффикс и завершает его нулевым символом.
Безопасная обработка с использованием find и xargs
find . -maxdepth 1 -type f -print0 | xargs -0 -I {} basename -z {} | xargs -0 echo "Обработанный файл:"
Извлекает имена файлов, найденных командой find, разделяя их нулевыми символами, обрабатывает их с помощью basename, а затем безопасно передает следующей команде с помощью xargs.
Обработка нескольких путей к файлам
echo -e "/dir/file one.txt\0/dir/file two.log" | xargs -0 -I {} basename -z {} | xargs -0 -n 1 echo
Обрабатывает несколько путей к файлам одновременно и получает результат, разделенный нулевыми символами.
Советы и примечания
Полезные советы и моменты, на которые стоит обратить внимание при использовании basename -z.
Важность использования нулевого (null) символа
При наличии в именах файлов специальных символов, таких как пробелы, табуляции или символы новой строки, опция `-z` позволяет точно распознавать эти символы как часть имени файла, предотвращая ошибки в скриптах. Это особенно мощная комбинация при использовании с `find -print0` и `xargs -0`.
- Безопасная обработка: Предотвращает ошибки разбора из-за пробелов или специальных символов в именах файлов.
- Совместимость со скриптами: Полностью совместим с другими командами, использующими нулевой символ в качестве разделителя, такими как `xargs -0`, `read -d ''`.
Внимание при удалении суффикса
При удалении суффикса он должен точно совпадать с конечной частью имени файла, чтобы быть удаленным. Например, `basename -z "file.txt.bak" .bak` вернет `file.txt`, но `basename -z "file.txt.bak" .txt` вернет `file.txt.bak`.