Skrypty powłoki Bash #20 - Pętla po plikach
Wstęp
Dzień dobry, dziś przedstawię jak operować na liście plików. Serdecznie zapraszam.
Listowanie plików
Listować pliki możemy na kilka sposobów np. przy pomocy komendy dedykowanej komendy ls
lub komendy echo
z dodaniem globbingu. Bardziej szczegółowy opis można będzie znaleźć w artykułach “Globbing”(w trakcie przygotowania) oraz “Listowanie plików”(w trakcie przygotowania).
Informacje o typach plików i przykłady listingu można znaleźć w Filozofia “Wszystko jest plikiem”
Krótko przedstawię kilka opcji na listing:
ls # domyślnie wyświetla tylko nazwy nie ukrytych plików
ls -a # wyświetla nazwy wszystkich plików w tym ukrytych
ls -l # wyświetla jawne pliki w postaci długiej ( ze szczegółami)
ls -al # wyświetla jawne i niejawne pliki w postaci długiej
ls -F # wyświetla jawne pliki z suffixem (znakiem na końcu) oznaczającym typ
echo * # wyświetla nazwy jawnych plików
Lecimy w kółko
Naszym dzisiejszym celem jest praca z plikami. Do tego celu wykorzystamy pętle for
Skoro już wiemy jak działa pętla for Skrypty powłoki Bash #11 - bieganie w kółko to przejdźmy do jej wykorzystania.
Zanim jednak zacznę mówić o operacji na liście plików, chcę wspomnieć o możliwości jej uzyskiwania. Przedstawię dziś dwie:
- Podstawienie komendy ls →
for plik in $(ls)
- Użycie globbingu →
for plik in *
Ja będę głównie korzystał z drugiego sposobu, z tego powodu, że jest od domyślnie bezpieczniejszy. Natomiast nic nie stoi na przeszkodzie, by używać komendy ls
w swoim “laboratorium”
Dzisiejszym naszym kodem będzie zwykły listing plików.
Naszym celem jest wyświetlić napis w następującej postaci: “PLIK ⇒ nazwa”
Do tego celu wykorzystamy następujący kod:
Dla plików jawnych
for plik in *; do
echo "PLIK => ${plik}"
done
### wersja 2 ###
for plik in $(ls); do
echo "PLIK => ${plik}"
done
Dla plików niejawnych
for plik in .*; do
echo "PLIK => ${plik}"
done
### wersja 2 ###
for plik in $(ls -a | grep "^\."); do
echo "PLIK => ${plik}"
done
Dla plików jawnych i nie jawnych
for plik in * .*; do
echo "PLIK => ${plik}"
done
### wersja 2 ###
for plik in $(ls -a); do
echo "PLIK => ${plik}"
done
Epilog
Na dziś to tyle.
Mam nadzieję, że dowiedziałeś/łaś się czegoś nowego, albo odświeżyłeś/łaś sobie wiedzę. Tak czy inaczej, serdecznie Ci dziękuję, za przeczytanie tego posta. Jeśli masz potrzebę o cos zapytać, kontakt znajdziesz w zakładce “O Mnie”. A teraz życzę miłego dzionka i smacznej kawusi :) Do widzenia.