Magia w terminalu: Bash usuwanie suffixu z nazwy pliku
Czy kiedykolwiek miałeś pliki z końcówkami, których chcesz się pozbyć? Może generujesz raporty w formacie "raport_2024.csv", a chcesz dostać sam "raport"? Dobra wiadomość – Bash ma dla Ciebie narzędzia, które potrafią to załatwić w mig! W tym artykule pokażemy Ci, jak podejść do tematu bash usuwanie suffixu z nazwy pliku z uśmiechem na twarzy i kodem w terminalu.
Dlaczego warto znać techniki manipulacji nazwami plików?
Automatyzacja, oszczędność czasu, większa kontrola – to tylko niektóre z zalet umiejętnego operowania na nazwach plików. Często przy tworzeniu backupów, skryptów analitycznych czy sortowania danych potrzebujemy pracować na czystych nazwach plików – bez rozszerzeń, dat czy numerów wersji.
Podstawy operacji na stringach w Bashu
Zanim rzucimy się w wir przykładów, musimy zrozumieć, jak Bash manipuluje ciągami znaków. Oto najprostszy przykład usunięcia rozszerzenia:
filename="raport_2024.csv"
basename="${filename%.csv}"
echo "$basename" # wynik: raport_2024
Operator % usuwa najkrótsze dopasowanie wzorca od końca ciągu. Jeżeli chcesz usunąć wszystko po kropce:
filename="raport_2024.csv"
basename="${filename%%.*}"
echo "$basename" # wynik: raport_2024
Bash usuwanie suffixu z nazwy pliku przykłady
Pora na konkrety! Zobaczmy kilka scenariuszy, które często pojawiają się w codziennej pracy:
1. Usunięcie rozszerzenia pliku
filename="zdjecie_wakacje.jpg"
clean_name="${filename%.*}"
echo "$clean_name" # zdjecie_wakacje
2. Usunięcie daty na końcu nazwy
Załóżmy, że plik nazywa się dane_20240415.txt i chcesz usunąć datę:
filename="dane_20240415.txt"
clean_name="${filename%_*}"
echo "$clean_name" # dane
3. Usunięcie suffixu "_backup"
filename="projekt_backup.zip"
clean_name="${filename%_backup.zip}"
echo "$clean_name" # projekt
4. Usuwanie z listy plików
A co jeśli chcesz usunąć suffix z wielu plików naraz? Pętla przychodzi z pomocą!
for file in *.txt; do
new_name="${file%.txt}"
echo "Nowa nazwa: $new_name"
done
To wygeneruje "czyste" nazwy dla każdego pliku z rozszerzeniem .txt.
Użycie komendy basename
Czasem możesz skorzystać z zewnętrznych komend, np. basename:
basename "raport_finansowy_2024.csv" .csv # wynik: raport_finansowy_2024
Zaawansowane manipulacje z sed i awk
Jeśli chcesz być bardziej kreatywny, możesz użyć sed lub awk. Na przykład:
echo "archiwum_maj_2023.zip" | sed 's/_maj_2023.zip//' # wynik: archiwum
To przydaje się, gdy suffix ma bardziej złożoną strukturę.
Tworzenie funkcji Bash do usuwania suffixu
Dla większej wygody stwórzmy funkcję, która zrobi to za nas:
remove_suffix() {
local name="$1"
local suffix="$2"
echo "${name%$suffix}"
}
remove_suffix "raport_koncowy_v2.pdf" "_v2.pdf"
# wynik: raport_koncowy
Teraz wystarczy wywołać remove_suffix z odpowiednimi argumentami!
Najczęstsze błędy i jak ich unikać
- Nie dopasowanie suffixu – upewnij się, że pasuje dokładnie do końcówki pliku.
- Użycie zbyt ogólnego wzorca – może usunąć więcej niż chcesz.
- Brak cudzysłowów – Bash może źle zinterpretować spacje.
Porady praktyczne – Bash usuwanie suffixu z nazwy pliku
Zawsze testuj operacje na plikach w "trybie suchym", czyli np. wypisuj nowe nazwy zamiast od razu zmieniać je komendą mv. Na przykład:
for f in *.bak; do
new="${f%.bak}"
echo "mv \"$f\" \"$new\""
done
Jeśli wszystko wygląda dobrze – zamień echo na mv i gotowe!
Podsumowanie
Opanowanie technik usuwania suffixów w Bashu to prawdziwa supermoc dla każdego, kto często pracuje z plikami. Dzięki prostym konstrukcjom takim jak %, %%, czy narzędziom typu sed i awk, możesz z łatwością zapanować nad chaosem w nazwach. Mamy nadzieję, że ten radosny przewodnik po bash usuwanie suffixu z nazwy pliku sprawił, że temat stał się lekki, przyjemny i przede wszystkim – praktyczny!
A jeśli znasz inne ciekawe sposoby, podziel się nimi w komentarzu. Świat Bashowych trików czeka na odkrycie!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!