elwin013's blog

kawałek sieci młodego geeka

Cześć, jestem Kamil! Witaj na moim blogu!

Bash #1: przenoszenie plików do katalogów o ich nazwie

Tym wpisem chcę rozpocząć serię poświęconą krótkim (bądź dłuższym) skryptom pisanych w Bashu. Zazwyczaj sam kod będzie poprzedzony opisem zagadnienia oraz krótko skomentowany. Zapraszam do czytania. :)

Zadanie: Mamy folder z plikami PDF. Chcemy by każdy z nich znalazł się w katalogu o jego nazwie (czyli plik jeden.pdf powinien się znaleźć w katalogu „jeden”).
Rozwiązanie:
for i in *.pdf; do mkdir ${i%.pdf} && mv $i ${i%.pdf}/; done

W skrócie: kod iteruje po plikach z rozszerzeniem .pdf, dla każdego z nich tworzy folder o jego nazwie, po czym przenosi go do tego folderu. :D

Pozytywnie mnie zaskoczyła możliwość iterowania pętli for po plikach, całej zawartości, rozszerzeniu czy też fragmencie nazwy (np. wszystkie zaczynające się na „test”). :)

Kodem ${i%.pdf} manipulujemy zmienną zawierającą nazwę pliku wycinając z niej wszystko do rozszerzenia (to znaczy mając w zmiennej $i nazwę pliku „jeden.pdf” to dzięki ${i%.pdf} otrzymamy tylko „jeden”). Tym sposobem otrzymujemy nazwę katalogu, który jest tworzony. Następnie przenosimy plik do folderu. :)

Mam nadzieje, że ktoś z tego skorzysta ;)
Oczywiście podziękowania dla Świstaka, dla którego ten kawałek kodu był pisany ;)


Zostaw komentarz