Jak wyodrębnić nazwę pliku i rozszerzenie w skrypcie powłoki

Jak wyodrębnić nazwę pliku i rozszerzenie w skrypcie powłoki

Aby wyodrębnić nazwę pliku i rozszerzenie ze ścieżki pliku w skrypcie powłoki, możesz użyć „Basename” Komenda.

Oto przykład tego, jak możesz użyć Basename wyodrębnić Nazwa pliku I rozszerzenie Z danej ścieżki pliku:

#!/usr/bin/env bash # Zdefiniuj ścieżkę pliku filePath = "/var/log/maila.Log " # Wyodrębnij nazwę pliku i rozszerzenie z pliku nazwa ścieżki pliku = $ (podstawa„ $ filepath ") # wyodrębnij rozszerzenie z PLIK PATH Extension =" $ nazwa pliku ##*. " # Wyodrębnij nazwę pliku bez rozszerzenia nazwy pliku =" $ nazwa pliku%.* ”
12345678910111213#!/usr/bin/env bash # Zdefiniuj pliku pathFilePath = "/var/log/maila.Log " # Wyodrębnij nazwę pliku i rozszerzenie z pliku ścieżka PathFileName = $ (Basename" $ ​​filepath ") # wyodrębnij rozszerzenie z pliku pathoxtension =" $ nazwa pliku ##*. " # Wyodrębnij nazwę pliku bez extensionFileName =" $ nazwa pliku%.* ”

W tym przykładzie ”$ FilePath„to ścieżka pliku, z której chcesz wyodrębnić nazwę pliku i rozszerzenie. Basename Polecenie wyodrębnia Nazwa pliku I rozszerzenie ze ścieżki pliku i przechowuje ją w Nazwa pliku zmienny.

rozszerzenie Zmienna jest następnie ustawiona na ciąg po ostatnim . znak w zmiennej nazwy pliku, za pomocą ## Operator rozszerzenia parametrów.

Nazwa pliku Zmienna jest następnie ustawiona na ciąg przed ostatnim . postać w Nazwa pliku zmienna za pomocą % Operator rozszerzenia parametrów.

To wyodrębni Nazwa pliku I rozszerzenie ze ścieżki pliku i przechowuj je odpowiednio w nazwie pliku i rozszerzenia.

Następnie możesz użyć tych zmiennych w skrypcie w razie potrzeby. Na przykład możesz użyć Nazwa pliku I rozszerzenie zmienne do sprawdzenia typu pliku lub zmiany nazwy.

1. Zdobądź nazwę pliku bez ścieżki

Najpierw usuń pełną ścieżkę pliku z nazwy pliku wejściowego. Na przykład, jeśli wejście nazwy pliku jest jako „/Var/log/poczta.dziennik" Następnie wyodrębnij pełną nazwę pliku Poczta.dziennik tylko.

#!/usr/bin/env bash filepath = "/var/log/e -mail.log „fileName = $ (nazwa bazy„ $ filePath ”) echo„ Pełna nazwa pliku: $ nazwa pliku ”
123456#!/usr/bin/env bash filepath = "/var/log/e -mail.log „fileName = $ (nazwa bazy„ $ filePath ”) echo„ Pełna nazwa pliku: $ nazwa pliku ”

Wyjście będzie:

Pełna nazwa pliku: poczta.dziennik 

2. Nazwa pliku bez rozszerzenia

Teraz wyodrębnij nazwę pliku bez przedłużenia z wyodrębnionej pełnej nazwy pliku bez ścieżki jak powyżej.

#!/usr/bin/env bash filepath = "/var/log/e -mail.log "filename = $ (basename" $ ​​filePath ") filename =" $ fileName%.* nazwa pliku „echo” to: $ nazwa pliku ”
123456#!/usr/bin/env bash filepath = "/var/log/e -mail.log "filename = $ (basename" $ ​​filePath ") filename =" $ fileName%.* nazwa pliku „echo” to: $ nazwa pliku ”

Wyjście będzie:

Nazwa pliku to: poczta 

3. Uzyskaj tylko rozszerzenie

Teraz wyodrębnij rozszerzenie pliku bez nazwy z wyodrębnionej pełnej nazwy pliku bez ścieżki.

#!/usr/bin/env bash filepath = "/var/log/e -mail.log "filename = $ (basename" $ ​​filePath ") rozszerzenie =" $ nazwa pliku ##*. rozszerzenie „echo”: $ rozszerzenie ”
1234567#!/usr/bin/env bash filepath = "/var/log/e -mail.log "filename = $ (basename" $ ​​filePath ") rozszerzenie =" $ nazwa pliku ##*. rozszerzenie „echo”: $ rozszerzenie ”

Wyjście będzie:

Rozszerzenie: log 

4. Wyodrębnia ścieżka katalogu

Możesz także użyć „Dirname” polecenie wyodrębnienia ścieżki katalogu z pełnej ścieżki pliku. Na przykład:

#!/usr/bin/env bash filepath = "/var/log/e -mail.log "dir = $ (dirname" $ ​​filepath ") echo" Directory: $ dir "
123456#!/usr/bin/env bash filepath = "/var/log/e -mail.log "dir = $ (dirname" $ ​​filepath ") echo" Directory: $ dir "

Wyjście będzie:

Katalog:/var/log/ 

Wniosek

Ten szybki instruktaż pomaga zrozumieć, jak wyodrębnić nazwę pliku i rozszerzenie ze ścieżki pliku. Należy pamiętać, że te polecenia działają tylko ze skorupą bash. Jeśli używasz innej powłoki, może być konieczne użycie innej składni.