Użycie polecenia `basename` do odczytania nazwy pliku
Polecenie `basename` służy do odczytania nazwy pliku bez rozszerzenia z katalogu lub ścieżki pliku.
Składnia:
nazwa podstawowaNAZWA[PRZYROSTEK]
lub
nazwa podstawowaOPCJA... NAZWA...
Tutaj NAME może zawierać nazwę pliku lub nazwę pliku z pełną ścieżką. SUFFIX jest opcjonalny i zawiera część rozszerzenia pliku, którą użytkownik chce usunąć. Polecenie `basename` ma kilka opcji opisanych poniżej.
Opcje
Nazwa | Opis |
-do | Służy do przekazywania wielu nazw plików ze ścieżką lub bez ścieżki jako argumentów poleceń. |
-s | Służy do przekazywania rozszerzenia jako sufiksu, który należy usunąć. |
-z | Służy do wyświetlania wielu nazw plików poprzez oddzielenie każdego pliku wartością null. |
-Wsparcie | Służy do wyświetlania informacji o użyciu polecenia `basename`. |
-wersja | Służy do wyświetlania informacji o wersji. |
Przykład-1: Używanie NAME i SUFFIX
Następujące polecenie `basename` pobierze nazwę pliku z rozszerzeniem. SUFFIX jest pomijany w tym poleceniu. Tutaj wyjście jest „produkt.txt” .
$nazwa podstawowa /Dom/fahmida/kod/produkt.txt
Jeśli chcesz pobrać nazwę pliku bez rozszerzenia, musisz podać rozszerzenie pliku jako SUFFIX za pomocą polecenia `basename`. Tutaj rozszerzenie to .txt. Uruchom następujące polecenie, aby usunąć rozszerzenie z pliku.
$nazwa podstawowa /Dom/fahmida/kod/produkt.txt .txt
Przykład-2: Używanie opcji „-a” i NAZWA
W tym przykładzie pokazano użycie opcji „-a” polecenia `basename`. Tutaj dwie ścieżki plików są przekazywane jako argumenty komendą `basename`. Każda nazwa pliku z rozszerzeniem zostanie pobrana ze ścieżki i wydrukowana przez nowy wiersz.
$nazwa podstawowa -do /Dom/fahmida/index.html/Dom/fahmida/kod/mp.txt
Przykład-3: Używanie opcji „-z” i NAZWA
Opcja '-z' jest używana z poleceniem `basename` do wypisania wielu nazw plików z wartością null zamiast nowej linii. Poniższe polecenie używa dwóch opcji razem, „-a” i „-z”. Tutaj dwie nazwy plików, index.html oraz mp.txt wydrukuje bez spacji lub nowej linii.
$nazwa podstawowa -ten /Dom/fahmida/index.html/Dom/fahmida/kod/mp.txt
Przykład-4: Używanie opcji „-s” i NAZWA
Następujące polecenie może być użyte jako alternatywa dla SUFFIX z `basename`. Rozszerzenie pliku musi przejść z opcją „-sh”, aby usunąć rozszerzenie pliku z pliku. Poniższy przykład usunie rozszerzenie „-sh” z pliku „addition.sh”.
$nazwa podstawowa -s.sh dodatek.sh
Przykład-5: Usuń rozszerzenie pliku bez SUFFIX
Jeśli nie znasz rozszerzenia pliku, który chcesz usunąć z nazwy pliku, ten przykład pomoże ci rozwiązać problem. Utwórz plik o nazwie read_file.sh z następującym kodem, aby pobrać nazwę pliku o dowolnym rozszerzeniu. W tym przykładzie użyto polecenia `sed` do usunięcia dowolnego typu rozszerzenia z nazwy pliku. Jeśli uruchomisz skrypt, wynikiem będzie „ przeciętny ’ po usunięciu rozszerzenia ‘ py „.
read_file.sh
#!/kosz/bash# Ustaw nazwę pliku ze ścieżką
Nazwa pliku=„/home/fahmida/kod/średnia.py”
# Odczytaj nazwę pliku bez rozszerzenia za pomocą ‘basname’ i komendy `sed`
wyrzucił '$(basename '$filename' | sed 's/(.*)..*/1/')'
Uruchom skrypt.
$grzmotnąćread_file.sh
Przykład 6: Konwertuj rozszerzenie pliku z txt na docx
Nazwa pliku bez rozszerzenia musi przekonwertować plik z jednego rozszerzenia na drugie. Ten przykład pokazuje, jak można zmienić rozszerzenie wszystkich plików tekstowych (.txt) na pliki tekstowe (.docx) za pomocą polecenia `basename` w skrypcie bash. Utwórz plik o nazwie, plik_konwersji.sh z następującym kodem. W tym przypadku pętla for-in służy do odczytywania wszystkich plików tekstowych za pomocą .tekst rozszerzenie z bieżącego katalogu. Nazwa pliku bez rozszerzenia jest odczytywana poleceniem `basename` i zmieniana przez dodanie rozszerzenia .docx w każdej iteracji pętli.
plik_konwersji.sh
#!/kosz/bash# pętla odczyta każdy plik tekstowy z bieżącego katalogu
dlaNazwa plikuw ``ls *.tekst``
robić
# Wydrukuj nazwę pliku tekstowego przed konwersją
wyrzucił 'Nazwa pliku przed konwersją:$nazwa pliku'
# Zmień rozszerzenie pliku txt na docx
mv - '$nazwa pliku' '$(nazwa podstawowa -- '$nazwapliku' .txt).docx '
Gotowe
Uruchom skrypt.
$grzmotnąćplik_konwersji.shSprawdź, czy pliki tekstowe są konwertowane, czy nie, używając polecenia `ls`.
$ls
Przykład-7: Odczytaj nazwę pliku bez rozszerzenia za pomocą rozszerzenia parametrów powłoki
Rozszerzanie parametrów powłoki to kolejny sposób odczytywania nazwy pliku bez rozszerzenia w bash. Ten przykład pokazuje zastosowania rozszerzania parametrów powłoki. Następujące polecenie zapisze ścieżkę do pliku w zmiennej $ Nazwa pliku .
$Nazwa pliku='/var/usr/temp/mojplik.tar.gz'Następujące polecenie usunie wszystkie typy rozszerzeń ze ścieżki i zapisze ścieżkę pliku bez rozszerzenia w zmiennej, $plik1 .
$plik1='${nazwa pliku%%.*}'Następujące polecenie wydrukuje nazwę pliku tylko ze ścieżki. Tutaj dane wyjściowe będą „ mój plik „.
$wyrzucił '${plik1##*/}'Jeśli nazwa pliku zawiera dwa rozszerzenia z dwoma kropkami (.) i chcesz odczytać nazwę pliku, usuwając ostatnie rozszerzenie pliku, musisz użyć następującego polecenia. Uruchom następujące polecenie, które przechowuje ścieżkę do pliku w zmiennej, $ plik2 usuwając ostatnie rozszerzenie pliku.
$plik2='${nazwa pliku%.*}'Teraz uruchom następujące polecenie, aby wydrukować nazwę pliku z rozszerzeniem jednej kropki (.). Tutaj dane wyjściowe będą mójplik.tar.
$wyrzucił '$ {plik2 ## * /}'
Wniosek
Nazwa pliku bez rozszerzenia jest wymagana do różnych celów. Niektóre zastosowania nazwy pliku bez rozszerzenia wyjaśniono w tym samouczku na przykładach, takich jak konwersja plików. Ten samouczek pomoże zainteresowanym użytkownikom poznać sposoby oddzielania nazwy pliku i rozszerzenia od ścieżki pliku. Tutaj wyjaśniono dwa sposoby. Użytkownik może skorzystać z dowolnego z tych sposobów, aby wyodrębnić nazwę pliku tylko ze ścieżki pliku.