Moc zaklęta w terminalu cz. 7

Siódmy artykuł z serii „Moc zaklęta w terminalu” nosi podtytuł – „Przyspiesz operacje na swoich plikach i katalogach„. Przedstawię tutaj kilka ciekawostek ułatwiających zarządzanie (kopiowanie/usuwanie/przenoszenie/wyszukiwanie itd.) plikami oraz katalogami w systemie.

Przykłady ilustrowane będą na plikach, ale równie dobrze polecenia można zastosować w przypadku katalogów.

*

W jaki sposób zwykły znaczek gwiazdki ułatwia zarządzanie plikami? Otóż * pozwala na zastąpienie nazwy pliku dowolnym ciągiem znaków.
Przykład: mamy w katalogu 100 plików tekstowych oraz 100 plików wideo o takich samych nazwach jak pliki tekstowe. Aby wykonać operacje na WSZYSTKICH plikach tekstowych użyj polecenia:

operacja *.txt

Analogicznie pliki wideo:

operacja *.avi

Aby wykonać operacje na parze (w tym przypadku, a ogólnie na wszystkich rodzajach plików o tej samej nazwie) plików, użyj polecenia:

operacja nazwa.*

Jeśli chcesz wykonać operacje na kilku plikach posiadających taki sam początek (np. piosenki jednego wykonawcy, filmy z jednej serii) użyj polecenia:

operacje nazwa*.*

Przykładowe nazwy plików poddane operacji – nazwa1.txt, nazwa-23.avi, nazwa_czegoś.mp3 – proste! Aby przenieść tylko pliki o danym rozszerzeniu, zamień gwiazdkę znajdującą się po kropce (.*) na odpowiednie rozszerzenie:

operacje nazwa*.txt

A jak wykonać operacje na plikach zwierających określoną frazę?

operacja *fraza*.*

Fraza może występować na początku, w środku lub na końcu nazwy pliku – rozszerzenie dowolne.

?

Znak zapytania „?” zastępuje jedynie jeden znak, np.:

operacja img?.jpg

Operacji zostaną poddane pliki: img1.jpg, img3.jpg, imga.jpg, a pliki postaci img11.jpg, imgaa.jpg pozostaną nietknięte!

[ ]

Kwadratowe nawiasy to swojego rodzaju wyliczenia. Określa się w nich, które znaki mają w danym miejscu się znajdować (na zasadzie alternatywy) np.:

operacje nazwa_[abc].txt

Pliki nazwa_a.txt, nazwa_b.txt oraz nazwa_c.txt zostaną poddane operacji, natomiast nazwa_d.txt itd. już nie!
Jeśli chcesz, aby w nazwie występowały znaki z jakiegoś zakresu użyj polecenia:

operacja nazwa[a-k].txt

Wszystkie pliki postaci nazwaa.txt, nazwab.txt, nazwac.txt aż do nazwak.txt zostaną poddane operacji.

Operatory można łączyć!

To najważniejsze prawo, więc dozwolone są kombinacje:

operacja ?-source[0-9].*
operacja [0259]img*.jpg
operacja *-[a-i][b-z][0-9].*

Wiem, wiem – strasznie to wygląda, ale bywa przydatne!

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • jarekzon

    Ten portal jest po prostu super !

  • matbur

    Korzystamy tutaj z wyrażeń regularnych?

    • http://www.ubuntu-pomoc.org/ Łukasz Schmidtke

      echo -e „123n456n789n0” | grep „[3-7]”
      Też można.