Видобути ім’я файлу та розширення в 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 command — це потужний інструмент обробки тексту, який можна використовувати для вилучення частин рядка. Наприклад, ви можете використати такий синтаксис, щоб витягти ім’я файлу та розширення з шляху до файлу:

filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename

Ознайомтеся з нашим практичним практичним посібником із вивчення Git з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!

Vous використання aussi можете оплатити awk щоб видобути розширення окремо:

extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension

Плюси:
  • Потужний
  • Можна окремо витягти назву файлу та розширення
  • Правильно обробляє назви файлів із пробілами
Мінуси:
  • Синтаксис може бути незнайомим для деяких користувачів
  • Потрібна передача шляху до файлу awk

Висновок

Загалом, вилучення назви файлу та розширення файлу в Bash може бути корисною технікою для роботи з файлами та виконання різних завдань в оболонці Bash.

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

Часова мітка:

Більше від Stackabuse