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