blog.furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Przycinanie nazwy pliku i katalogu w Bash

Bash ma wiele ciekawych możliwości, które pozwalają zrobić wiele rzeczy bez odwoływania się do innych programów.

Przykład działań na tekście np. na ścieżce do pliku

Przykładowa zmienna do prezentacji

$ a=/home/uzytkownik/skrypt.123.py
  • wypisanie zmiennej
$ echo $a
/home/uzytkownik/skrypt.123.py
  • wypisanie zmiennej - alteratywny sposób
$ echo ${a}
/home/uzytkownik/skrypt.123.py

W poniższych nie wykorzystywane są wyrażenia regularne i sama gwiazdka * oznacza dowolny ciąg znaków (o dowolnej długości lub pusty)

% - obcięcie od końca minimalnej ilości

  • obcięcie wszystkiego od końca (%) do pierwszej kropki włącznie (licząc od końca) (.*) czyli sposób na pozbycie się rozszerzenia pliku
$ echo ${a%.*}
/home/uzytkownik/skrypt.123
  • obcięcie wszystkiego od końca (%) do pierwszego slasha włącznie (licząc od końca) (/*) czyli sposób na pozbycie się całej nazwy pliku
$ echo ${a%/*}
/home/uzytkownik

%% - obcięcie od końca maksymalnej ilości

  • obcięcie wszystkiego od końca (%%) do ostatniej kropki włącznie (licząc od końca) (.*) czyli sposób na pozbycie się "podwójnego" rozszerzenia pliku
$ echo ${a%%.*}
/home/uzytkownik/skrypt

# - obcięcie od początku minimalnej ilości

  • obcięcie wszystkiego od początku (#) do pierwszego slasha włącznie (licząc od początku) (*/)
$ echo ${a#*/} 
home/uzytkownik/skrypt.123.py
  • obcięcie wszystkiego od początku (#) do pierwszej kropki włącznie (licząc od początku) (*.) czyli sposób na zostawienie tylko "podwójnego" rozszerzenia pliku
$ echo ${a#*.} 
123.py

## - obcięcie od początku maksymalnej ilości

  • obcięcie wszystkiego od początku (##) do ostatniego slasha włącznie (licząc od początku) (*/) czyli sposób na zostawienie tylko nazwy pliku
$ echo ${a##*/} 
skrypt.123.py
  • obcięcie wszystkiego od początku (#) do ostatniej kropki włącznie (licząc od początku) (*.) czyli sposób na zostawienie tylko rozszerzenia pliku
$ echo ${a##*.} 
py
Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury