Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


26.10.2020

Nowa wersja nVision

Można już pobierać nową wersję nVision
26.10.2020

Monitorowanie infrastruktury

Vertiv Environet Alert
23.10.2020

Telefonia w chmurze

NFON Cloudya
23.10.2020

Nowości w EDR

Bitdefender GravityZone
23.10.2020

Wykrywanie anomalii

Flowmon ADS11
23.10.2020

Mobilny monitor

AOC 16T2
22.10.2020

HP Pavilion

HP zaprezentowało nowe laptopy z linii Pavilion.
22.10.2020

Inteligentny monitoring

WD Purple SC QD101
22.10.2020

Przełącznik 2,5GbE

QNAP QSW-1105-5T

Wyszukiwanie w Linuksie

Data publikacji: 16-07-2020 Autor: Konrad Kubecki

Wyszukiwanie plików poprzez interfejs graficzny jest intuicyjne i nie wymaga szczególnych umiejętności. Wykonanie tej samej czynności za pośrednictwem wiersza poleceń otwiera jednak całkowicie nowe możliwości, co wpływa na efektywność i czas potrzebny na odnalezienie zasobu.

 

Polecenia find i locate to najpopularniejsze linuksowe narzędzia obsługiwane z poziomu wiersza poleceń służące do wyszukiwania plików. W niniejszym artykule przedstawimy przykłady użycia ich poleceń – od prostych wyszukiwań po najbardziej zaawansowane, które szczegółowo opisują cechy poszukiwanych plików. Przyjrzymy się również fundamentalnym różnicom dzielącym programy find i locate, które mają kluczowy wpływ na szybkość działania i wiarygodność wyników. Nie do przecenienia jest także możliwość wykonania czynności na znalezionych plikach: ich przenoszenie, usuwanie, kompresowanie lub zmiana uprawnień.


> FIND


Główna cecha polecenia find to rzeczywiste przeszukiwanie systemu plików przy każdym jego uruchomieniu. Oznacza to, że wynik jest wiarygodny, gdyż obecność poszukiwanych obiektów ustalana jest w chwili działania polecenia. Oprócz tego find oferuje wiele parametrów, które pomagają szczegółowo określić cechy szukanych obiektów.


W najprostszej formie użycie programu find może wyglądać następująco:


find / -name xxx


Pierwszym argumentem jest ścieżka, którą program będzie przeszukiwał. W powyższym przykładzie widzimy główny katalog systemu plików. Można zastąpić go dowolną inną ścieżką, żeby ograniczyć zakres wyszukiwania i tym samym skrócić czas działania programu. Wyszukiwanie da się zamknąć w ramach bieżącego katalogu. Wtedy powyższe polecenie przyjmie postać:


find . -name xxxx.


Parametr -name to oczywiście nazwa poszukiwanego obiektu. Warto wiedzieć, jak precyzować nazwy plików lub katalogów, które chcemy wyszukać, aby działanie programu find przyniosło spodziewane efekty. Jeżeli uruchomimy przeszukiwanie komendą find / -name 'testfile', to otrzymamy listę plików, których dokładna nazwa to 'testfile':


[root@localhost test]# find / -name 'testfile'
/test/testfile
/test2/testfile

 

Jeśli natomiast chcemy uzyskać listę plików, których nazwy zaczynają się na 'testfile', to polecenie find trzeba zmodyfikować do postaci find / -name 'testfile*'.

Analogicznie otrzymanie listy plików zawierających w nazwie określoną frazę to komenda:


[root@localhost ~]# find / -name '*estfi*'
/etc/profile.d/guestfish.sh
/usr/bin/guestfish
/usr/share/man/man1/guestfish.1.gz
/test/testfile
/test/testfile2
/test2/testfile


W ramach jednego uruchomienia programu find możemy poszukać plików zawierających różniące się od siebie nazwy. Przyjmijmy, że interesują nas pliki posiadające w nazwie frazę 'testfile' oraz pliki, których nazwy zaczynają się słowem 'przyklad'. Podwójne wyszukiwanie zrealizuje polecenie:


[root@localhost test]# find / -name 'testfile*' -or -name 'przyklad*'
/test/testfile
/test/testfile2
/test/przyklad1
/test/przyklad2
/test/przyklad3
/test2/testfile


Co ważne, operator or można stosować w liczbie większej niż na zaprezentowanych przykładach. Otwiera to ciekawe perspektywy w wyszukiwaniu wielu różniących się od siebie obiektów w ramach jednego wykonania polecenia find.


Drugim ciekawym operatorem jest and. Dzięki niemu można między innymi dokładniej określić schemat nazewnictwa plików, których listę chcemy uzyskać:


[root@localhost test]# find / -name 'test*' -and -name '*le'
/usr/share/gutenprint/samples/testpattern.sample
/test/testfile
/test2/testfile


Wyszukiwanie plików to najczęściej spotykany scenariusz. Jednak czasem może zajść potrzeba odnalezienia określonych katalogów, linków symbolicznych, socketów czy blokowych plików specjalnych. W takim przypadku można zawęzić wyszukiwanie, aby otrzymać listę tylko tych elementów, których rzeczywiście szukamy. Wyszukanie określonych katalogów realizuje polecenie:


find /test -type d -name 'nazwa_katalogu'


Jeżeli obiektem poszukiwań są linki symboliczne, to realizująca to komenda powinna zawierać parametry:


find /test -type l -name 'nazwa_linku'


Natomiast wskazanie programowi find, aby szukał samych plików, realizuje parametr -type -f.


Polecenie find daje możliwość szukania plików na podstawie czasu ich ostatniej zmiany. Rozumiemy przez to czas ostatniej modyfikacji – zmiany zawartości pliku (mtime), czas odczytania pliku (atime) oraz czas zmiany statusu (ctime). Zapisywane są wraz z wartością liczbową, która określa czas w postaci n+24. Oznacza to, że podana liczba mnożona jest przez liczbę 24, reprezentującą godziny. W skrócie – otrzymujemy liczbę dni. Przykładowe polecenie wyszukujące plików, których modyfikacja miała miejsce ponad 7 dni temu, przyjmie postać:


find /test -type f -mtime +7

 

[...]

 

Specjalista ds. utrzymania infrastruktury i operacji. Zajmuje się problematyką budowy i utrzymania centrów przetwarzania danych oraz zarządzania nimi i koordynowaniem zmian dotyczących krytycznej infrastruktury IT.

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"