Wyodrębnij nazwę pliku i rozszerzenie w Bash

Wprowadzenie

Istnieje wiele powodów, dla których możesz chcieć wyodrębnić nazwę pliku i rozszerzenie pliku w Bash:

  • Aby manipulować nazwą pliku lub rozszerzeniem – Możesz wyodrębnić nazwę pliku lub rozszerzenie, aby je zmodyfikować, na przykład dodać przedrostek lub sufiks do nazwy pliku lub zmienić rozszerzenie pliku.

  • Aby utworzyć plik o unikalnej nazwie – Możesz chcieć wyodrębnić nazwę pliku i rozszerzenie, aby utworzyć nowy plik z unikalną nazwą, na przykład dodając znacznik czasu lub losową liczbę do nazwy pliku.

  • Aby użyć nazwy pliku lub rozszerzenia w skrypcie lub poleceniu – Możesz wyodrębnić nazwę pliku lub rozszerzenie, aby użyć ich jako argumentu lub danych wejściowych dla skryptu lub polecenia, na przykład przekazać je do programu lub utworzyć plik o takiej samej nazwie jak katalog.

  • Aby wyodrębnić informacje z nazwy pliku lub rozszerzenia – Możesz wyodrębnić nazwę pliku lub rozszerzenie, aby wyodrębnić z niego informacje, takie jak data lub typ pliku.

W tym artykule przyjrzymy się trzem najczęstszym sposobom wyodrębniania nazwy pliku i rozszerzenia pliku w Bash. Przyjrzymy się każdemu z nich i przedstawimy zalety i wady, abyś mógł podjąć przemyślaną decyzję, które podejście najbardziej Ci odpowiada.

Metoda 1: Korzystanie z nazwa podstawowa Command

Połączenia basename polecenia można użyć do wyodrębnienia nazwy pliku i rozszerzenia ze ścieżki pliku:

filename=$(basename /path/to/file.txt)
echo $filename

Chociaż ta metoda jest dość prosta i łatwa w użyciu, niestety nie ma możliwości, abyśmy mogli wyodrębnić tylko nazwę pliku (bez rozszerzenia) bez dalszego przetwarzania.

Można również użyć dirname polecenie wyodrębnienia ścieżki do katalogu osobno:

directory=$(dirname /path/to/file.txt)
echo $directory

Plusy:
  • Prosty w obsłudze
  • Poprawnie obsługuje nazwy plików ze spacjami
Wady:
  • Wyodrębnia tylko nazwę pliku i nie może wyodrębnić rozszerzenia osobno bez dodatkowego przetwarzania

Metoda 2: Korzystanie z rozszerzenia parametrów

Bash udostępnia funkcję o nazwie rozszerzenie parametrów, który umożliwia wyodrębnienie części zmiennej przy użyciu specjalnej składni. Na przykład możesz użyć następującej składni, aby wyodrębnić nazwę pliku i rozszerzenie ze ścieżki pliku przechowywanej w zmiennej:

filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename

Możesz także użyć rozszerzenia parametrów, aby osobno wyodrębnić rozszerzenie:

extension=${filename##*.}
echo $extension

Plusy:
  • Elastyczne
  • Może osobno wyodrębnić zarówno nazwę pliku, jak i rozszerzenie,
  • Poprawnie obsługuje nazwy plików ze spacjami
Wady:
  • Wymaga zmiennej do przechowywania ścieżki pliku

Metoda 3: Korzystanie z Awk komenda

Połączenia awk command to potężne narzędzie do przetwarzania tekstu, którego można użyć do wyodrębnienia części ciągu znaków. Na przykład możesz użyć następującej składni, aby wyodrębnić nazwę pliku i rozszerzenie ze ścieżki pliku:

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

Zapoznaj się z naszym praktycznym, praktycznym przewodnikiem dotyczącym nauki Git, zawierającym najlepsze praktyki, standardy przyjęte w branży i dołączoną ściągawkę. Zatrzymaj polecenia Google Git, a właściwie uczyć się to!

Można również użyć awk wyodrębnić rozszerzenie osobno:

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

Plusy:
  • Potężny
  • Może osobno wyodrębnić zarówno nazwę pliku, jak i rozszerzenie
  • Poprawnie obsługuje nazwy plików ze spacjami
Wady:
  • Składnia może być nieznana niektórym użytkownikom
  • Wymaga potokowania ścieżki pliku awk

Wnioski

Ogólnie rzecz biorąc, wyodrębnianie nazwy pliku i rozszerzenia pliku w Bash może być przydatną techniką do pracy z plikami i wykonywania różnych zadań w powłoce Bash.

Każda z wymienionych metod ma swoje zalety i wady, a najlepszy wybór będzie zależał od Twoich konkretnych potrzeb i preferencji. Często przydatna jest znajomość wielu podejść, aby móc wybrać to, które jest najbardziej odpowiednie w danej sytuacji.

Znak czasu:

Więcej z Nadużycie stosu