Три метода извлечения информации о файлах в Linux: имена, расширения и пути



Давайте более подробно рассмотрим три метода извлечения информации из имен файлов в командной оболочке, описанных в вашем исходном тексте.



1. Извлечение имени файла и расширения с помощью basename



Периодически возникает потребность извлечь имя файла без его расширения. Взглянем, как сделать это с использованием команды basename:



FILENAME="linuxzone.gzip"

NAME=$(basename "$FILENAME" .gzip)

echo "Имя файла: $NAME"



В данном методе мы используем basename для отделения имени файла от расширения. Команда basename принимает имя файла и строку с символами расширения, которые мы хотим удалить. Результат сохраняется в переменную NAME.



2. Гибкий подход с использованием переменной IFS



Если вам нужен более гибкий способ, обратите внимание на переменную IFS (внутренний разделитель полей):



FILE="/tmp/linuxzone.gzip"



OLDIFS="$IFS"

IFS='.'

read -r NAME EXTENSION <<< "$FILE"

IFS="$OLDIFS"



echo "Имя файла: $NAME"

echo "Расширение: $EXTENSION"



В этом методе мы используем переменную IFS для разделения имени файла и расширения. Мы временно изменяем значение IFS на точку, после чего считываем имя и расширение файла в переменные NAME и EXTENSION.



3. Извлечение пути к файлу с помощью dirname



Иногда бывает полезно получить только путь к файлу без его имени. Для этого используется команда dirname:



FILE_PATH="/tmp/linuxzone.gzip"

DIRECTORY=$(dirname "$FILE_PATH")

echo "Путь к директории: $DIRECTORY"



В данном случае мы применяем dirname для извлечения пути к файлу. Команда dirname принимает путь к файлу и возвращает только путь к директории, удаляя имя файла.



Эти три метода предоставляют разнообразные способы извлечения информации из имен файлов в Linux. Выберите тот, который наилучшим образом соответствует вашей задаче. Если у вас возникли вопросы или комментарии, не стесняйтесь спрашивать!