Использование команды basename для чтения имени файла
Команда basename используется для чтения имени файла без расширения из каталога или пути к файлу.
Синтаксис:
базовое имяИМЯ[СУФФИКС]
или
базовое имяВАРИАНТ ... НАЗВАНИЕ ...
Здесь NAME может содержать имя файла или имя файла с полным путем. SUFFIX является необязательным и содержит часть расширения файла, которую пользователь хочет удалить. У команды basename есть несколько параметров, которые описаны ниже.
Параметры
Имя | Описание |
-к | Он используется для передачи нескольких имен файлов с путем или без пути в качестве аргументов команды. |
-s | Он используется для передачи расширения как суффикса, который необходимо удалить. |
-С участием | Он используется для отображения нескольких имен файлов, разделяя каждый файл нулевым символом. |
-помощь | Он используется для отображения информации об использовании команды basename. |
-версия | Он используется для отображения информации о версии. |
Пример-1: Использование NAME и SUFFIX
Следующая команда `basename` получит имя файла с расширением. СУФФИКС в этой команде опускается. Здесь вывод ‘Product.txt’ .
$базовое имя /дом/Фахмида/код/product.txt
Если вы хотите получить имя файла без расширения, вы должны указать расширение файла как SUFFIX с помощью команды basename. Здесь расширение .txt. Выполните следующую команду, чтобы удалить расширение из файла.
$базовое имя /дом/Фахмида/код/product.txt .txt
Пример-2: Использование параметра «-a» и ИМЯ
В этом примере показано использование опции «-a» команды «basename». Здесь два пути к файлам передаются в качестве аргументов с помощью команды basename. Каждое имя файла с расширением будет извлекаться из пути и печататься с новой строкой.
$базовое имя -к /дом/Фахмида/index.html/дом/Фахмида/код/emp.txt
Пример-3: Использование параметра «-z» и ИМЯ
Параметр ‘-z’ используется с командой `basename` для печати нескольких имен файлов с нулевым значением вместо новой строки. Следующая команда использует вместе две опции: «-a» и «-z». Здесь два имени файла, index.html а также emp.txt будет печататься без пробелов и новой строки.
$базовое имя - /дом/Фахмида/index.html/дом/Фахмида/код/emp.txt
Пример-4: Использование параметра '-s' и ИМЯ
Следующая команда может использоваться как альтернатива SUFFIX с `basename`. Расширение файла необходимо передать с параметром «-sh», чтобы удалить расширение файла из файла. В следующем примере будет удалено расширение «-sh» из файла «add.sh».
$базовое имя -s.sh add.sh
Пример-5: Удалить расширение файла без СУФФИКСА
Если вы не знаете расширение файла, который хотите удалить из имени файла, этот пример поможет вам решить проблему. Создайте файл с именем read_file.sh со следующим кодом, чтобы получить имя файла любого расширения. Команда `sed` используется в этом примере для удаления любого типа расширения из имени файла. Если вы запустите сценарий, на выходе будет « в среднем ’После удаления расширения‘ ру '.
read_file.sh
#! / bin / bash# Задайте имя файла с путем
имя файлазнак равно'/home/fahmida/code/average.py'
# Прочтите имя файла без расширения, используя команду ‘basname’ и `sed`
выбросил '$ (базовое имя '$ имя_файла' | sed 's / (. * ) .. * / 1 / ')'
Запускаем скрипт.
$трепатьread_file.sh
Пример-6: преобразование расширения файла из txt в docx
Имя файла без расширения необходимо для преобразования файла из одного расширения в другое. В этом примере показано, как вы можете изменить расширение всех текстовых файлов (.txt) на файлы слов (.docx) с помощью команды `basename` в сценарии bash. Создайте файл с именем, convert_file.sh со следующим кодом. Здесь цикл for-in используется для чтения всех текстовых файлов с .текст расширение из текущего каталога. Имя файла без расширения читается командой basename и переименовывается путем добавления расширения .docx на каждой итерации цикла.
convert_file.sh
#! / bin / bash# цикл будет читать каждый текстовый файл из текущего каталога
дляимя файлав ``ls *.текст``
делать
# Распечатать текстовое имя файла перед преобразованием
выбросил 'Имя файла до преобразования:$ filename'
# Измените расширение файла txt на docx
мв - '$ filename' '$ (базовое имя - '$ имя файла' .txt).docx '
сделано
Запускаем скрипт.
$трепатьconvert_file.shПроверьте, преобразованы ли текстовые файлы или нет, с помощью команды ls.
$ls
Пример-7: Чтение имени файла без расширения с использованием расширения параметров оболочки
Расширение параметров оболочки - это еще один способ прочитать имя файла без расширения в bash. В этом примере показано использование расширения параметров оболочки. Следующая команда сохранит путь к файлу в переменной $ имя файла .
$имя файлазнак равно'/var/usr/temp/myfile.tar.gz'Следующая команда удалит все типы расширений из пути и сохранит путь к файлу без расширения в переменной, $ file1 .
$file1знак равно'$ {имя файла %%. *}'Следующая команда напечатает имя файла только из пути. Здесь вывод будет ' мой файл '.
$выбросил '$ {file1 ## * /}'Если имя файла содержит два расширения с двумя точками (.), И вы хотите прочитать имя файла, удалив последнее расширение файла, вам необходимо использовать следующую команду. Выполните следующую команду, которая сохраняет путь к файлу в переменной, $ file2 удалив последнее расширение файла.
$файл2знак равно'$ {имя файла%. *}'Теперь выполните следующую команду, чтобы напечатать имя файла с расширением в одну точку (.). Здесь вывод будет myfile.tar.
$выбросил '$ {file2 ## * /}'
Заключение
Имя файла без расширения требуется для различных целей. Некоторые варианты использования имени файла без расширения объясняются в этом руководстве с помощью некоторых примеров, таких как преобразование файлов. Это руководство поможет тем пользователям, которым интересно узнать, как отделить имя и расширение файла от пути к файлу. Здесь объясняются два способа. Пользователь может использовать любой из этих способов для извлечения имени файла только из пути к файлу.