Извлечь имя файла и расширение в Bash

Введение

Существует множество причин, по которым вам может потребоваться извлечь имя и расширение файла в 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.

Каждый из упомянутых методов имеет свои преимущества и недостатки, и лучший выбор будет зависеть от ваших конкретных потребностей и предпочтений. Часто бывает полезно ознакомиться с несколькими подходами, чтобы можно было выбрать тот, который наиболее подходит для вашей ситуации.

Отметка времени:

Больше от Стекабьюс