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.