Введение
Существует множество причин, по которым вам может потребоваться извлечь имя и расширение файла в Bash:
-
Чтобы манипулировать именем или расширением файла – Возможно, вам захочется извлечь имя или расширение файла, чтобы изменить его, например, добавив префикс или суффикс к имени файла или изменив расширение файла.
-
Чтобы создать файл с уникальным именем – Возможно, вам захочется извлечь имя и расширение файла, чтобы создать новый файл с уникальным именем, например, добавив к имени файла метку времени или случайное число.
-
Использование имени или расширения файла в скрипте или команде – Возможно, вам захочется извлечь имя или расширение файла, чтобы использовать его в качестве аргумента или входных данных для сценария или команды, например, чтобы передать его программе или создать файл с тем же именем, что и каталог.
-
Чтобы извлечь информацию из имени или расширения файла – Возможно, вам захочется извлечь имя или расширение файла, чтобы извлечь из него информацию, например дату или тип файла.
В этой статье мы рассмотрим три наиболее распространенных способа извлечения имени и расширения файла в Bash. Мы рассмотрим каждый из них и дадим вам плюсы и минусы, чтобы вы могли принять обоснованное решение о том, какой подход подходит вам лучше всего.
Метод 1: Использование базовое имя Command
Ассоциация basename
Команда может использоваться для извлечения имени и расширения файла из пути к файлу:
filename=$(basename /path/to/file.txt)
echo $filename
Хотя этот метод довольно прост и удобен в использовании, к сожалению, мы не можем извлечь только имя файла (без расширения) без какой-либо постобработки.
Вы также можете использовать утилиту dirname
команда для извлечения пути к каталогу отдельно:
directory=$(dirname /path/to/file.txt)
echo $directory
Плюсы:
- Простой в использовании
- Правильно обрабатывает имена файлов с пробелами
Минусы:
- Извлекает только имя файла и не может извлечь расширение отдельно без дополнительной обработки.
Способ 2: использование расширения параметров
Bash предоставляет функцию под названием расширение параметра, который позволяет извлекать части переменной, используя специальный синтаксис. Например, вы можете использовать следующий синтаксис для извлечения имени и расширения файла из пути к файлу, хранящегося в переменной:
filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename
Вы также можете использовать расширение параметров, чтобы извлечь расширение отдельно:
extension=${filename##*.}
echo $extension
Плюсы:
- Гибкий Подход
- Можно извлечь как имя файла, так и расширение отдельно,
- Правильно обрабатывает имена файлов с пробелами
Минусы:
- Требуется переменная для хранения пути к файлу.
Метод 3: Использование AWK команду
Ассоциация awk
Команда — мощный инструмент обработки текста, который можно использовать для извлечения частей строки. Например, вы можете использовать следующий синтаксис для извлечения имени и расширения файла из пути к файлу:
filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename
Ознакомьтесь с нашим практическим руководством по изучению Git с рекомендациями, принятыми в отрасли стандартами и прилагаемой памяткой. Перестаньте гуглить команды Git и на самом деле изучить это!
Вы также можете использовать awk
чтобы извлечь расширение отдельно:
extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension
Плюсы:
- powerful
- Можно отдельно извлечь имя и расширение файла.
- Правильно обрабатывает имена файлов с пробелами
Минусы:
- Синтаксис может быть незнаком некоторым пользователям.
- Требуется передать путь к файлу через
awk
Заключение
В целом, извлечение имени и расширения файла в Bash может быть полезным методом для работы с файлами и выполнения различных задач в оболочке Bash.
Каждый из упомянутых методов имеет свои преимущества и недостатки, и лучший выбор будет зависеть от ваших конкретных потребностей и предпочтений. Часто бывает полезно ознакомиться с несколькими подходами, чтобы можно было выбрать тот, который наиболее подходит для вашей ситуации.