Polecenie Znajdź w Linuksie (Znajdź pliki i katalogi)
polecenie find
jest jednym z najpotężniejszych narzędzi w arsenale administratorów systemu Linux. Wyszukuje pliki i katalogi w hierarchii katalogów w oparciu o dane wyrażenie użytkownika i może wykonywać określone przez użytkownika działania na każdym dopasowanym pliku.
możesz użyć poleceniafind
do wyszukiwania plików i katalogów na podstawie ich uprawnień, typu, daty, własności, rozmiaru i innych., Można go również łączyć z innymi narzędziami, takimi jak grep
lub sed
.
znajdź składnię polecenia #
ogólna składnia polecenia find
jest następująca:
- atrybut
options
kontroluje traktowanie dowiązań symbolicznych, opcje debugowania i metoda optymalizacji. - atrybut
path...
definiuje katalog początkowy lub katalogi, w których find przeszukuje pliki., - atrybut
expression
składa się z opcji, wzorców wyszukiwania i akcji oddzielonych operatorami.
aby wyszukać pliki w katalogu, użytkownik wywołujący poleceniefind
musi mieć uprawnienia do odczytu w tym katalogu.
spójrzmy na następujący przykład:
Znajdź pliki po nazwie #
wyszukiwanie plików po nazwie jest prawdopodobnie najczęstszym zastosowaniem polecenia find
., Aby znaleźć plik według jego nazwy, użyj opcji -name
, po której następuje nazwa pliku, którego szukasz.
na przykład, aby wyszukać plik o nazwie document.pdf
w katalogu /home/linuxize
, należy użyć następującego polecenia:
aby uruchomić wyszukiwanie bez rozróżniania wielkości liter, należy zmienić -name
opcja z :
powyższe polecenie będzie pasowało do „dokumentu.pdf”, ” dokument.pdf”..itd.,
wyszukiwanie plików po rozszerzeniu #
wyszukiwanie plików po rozszerzeniu jest tym samym, co wyszukiwanie plików po nazwie. Na przykład, aby znaleźć wszystkie pliki kończące się .log.gz
w katalogu /var/log/nginx
należy wpisać:
należy wspomnieć, że należy albo zacytować wzór, albo usunąć gwiazdkę *
symbol z odwrotnym ukośnikiem \
aby nie był interpretowany przez powłokę podczas używania znaku wieloznacznego.,
aby znaleźć wszystkie pliki, które nie pasują do regex*.log.gz
możesz użyć opcji-not
. Na przykład, aby znaleźć wszystkie pliki, które nie kończą się *.log.gz
należy użyć:
Znajdź pliki według typu #
czasami może być konieczne wyszukiwanie określonych typów plików, takich jak zwykłe pliki, katalogi lub dowiązania symboliczne. W Linuksie wszystko jest plikiem.,div>: named pipe (FIFO)
s
: socketna przykład, aby znaleźć wszystkie katalogi w bieżącym katalogu roboczym , należy użyć:
powszechnym przykładem może być rekurencyjna zmiana uprawnień do pliku witryny na 644
I uprawnienia katalogu do 755
używając polecenia chmod
:
Znajdź pliki według rozmiaru #
aby znaleźć pliki na podstawie rozmiaru, przekaż -size
parametr wraz z kryteriami wielkości.,9fdb538a6b”>: 512-bajtowe bloki (domyślnie)
c
: bajtyw
: dwubajtowe słowak
: kilobajtyM
: megabajtyG
: gigabajtyponiższe polecenie znajdzie wszystkie pliki dokładnie 1024
bajtów wewnątrz /tmp
katalog:
polecenie find
umożliwia również wyszukiwanie plików większych lub mniejszych niż określony rozmiar.,
w poniższym przykładzie wyszukujemy wszystkie pliki mniejsze niż 1MB
w bieżącym katalogu roboczym. Zauważ minus -
symbol przed wartością rozmiaru:
Jeśli chcesz wyszukać pliki o rozmiarze większym niż 1MB
, musisz użyć symbolu plus +
symbol:
możesz nawet wyszukiwać pliki w zakresie rozmiarów., Poniższe polecenie znajdzie wszystkie pliki pomiędzy 1
I 2MB
:
Znajdź pliki według daty modyfikacji #
find
polecenie może szukaj również plików na podstawie ich ostatniej modyfikacji, dostępu lub czasu zmiany.
podobnie jak podczas wyszukiwania według rozmiaru, użyj symboli plus i minus dla „większe niż” lub „mniej niż”.
powiedzmy, że kilka dni temu zmodyfikowałeś jeden z plików konfiguracyjnych dovecota, ale zapomniałeś który., Możesz łatwo filtrować wszystkie pliki w katalogu /etc/dovecot/conf.d
, który kończy się .conf
I został zmodyfikowany w ciągu ostatnich pięciu dni:
oto kolejny przykład filtrowania plików na podstawie daty modyfikacji za pomocą -daystart
, Poniższe polecenie wyświetli listę wszystkich plików w katalogu /home
, które zostały zmodyfikowane 30
lub więcej dni temu:
Znajdź pliki według uprawnień #
-perm
pozwala na wyszukiwanie plików na podstawie uprawnień do plików.,
na przykład, aby znaleźć wszystkie pliki z uprawnieniami dokładnie 775
wewnątrz katalogu /var/www/html
, należy użyć:
można przedrostek trybu numerycznego z minusem -
lub Slash /
.
Gdy ukośnik/
jest używany jako prefiks, to co najmniej jedna kategoria (użytkownik, grupa lub inne) musi mieć co najmniej odpowiednie bity ustawione, aby plik pasował.,
rozważ następujące przykładowe polecenie:
powyższe polecenie dopasuje wszystkie pliki z uprawnieniami do odczytu ustawionymi dla użytkownika, grupy lub innych.
Jeśli prefiks minus -
jest używany jako prefiks, to aby plik był zgodny, należy ustawić przynajmniej określone bity., Poniższe polecenie wyszukuje pliki, które mają uprawnienia do odczytu i zapisu dla właściciela i grupy oraz są czytelne dla innych użytkowników:
Znajdź pliki według właściciela #
aby znaleźć pliki należące do określonego użytkownika lub grupy, użyj -user
I -group
opcje.
na przykład, aby wyszukać wszystkie pliki i katalogi należące do użytkownika linuxize
, należy uruchomić:
Oto prawdziwy przykład., Załóżmy, że chcesz znaleźć wszystkie pliki należące do użytkownika www-data
I zmienić własność dopasowanych plików z www-data
na nginx
:
znajdź i usuń pliki #
aby usunąć wszystkie pasujące pliki, Dodaj opcję -delete
na końcu wyrażenia pasującego.
upewnij się, że używasz tej opcji tylko wtedy, gdy masz pewność, że wynik pasuje do plików, które chcesz usunąć., Zawsze dobrym pomysłem jest wydrukowanie dopasowanych plików przed użyciem opcji -delete
.
na przykład, aby usunąć wszystkie pliki kończące się .temp
z /var/log/
, należy użyć:
-delete
opcja ze szczególną ostrożnością. Poleceniefind
jest obliczane jako wyrażenie i jeśli najpierw dodasz opcję-delete
, polecenie usunie wszystko poniżej podanych punktów początkowych.,jeśli chodzi o katalogi,find
może usuwać tylko puste katalogi, tak samo jakrmdir
.
podsumowanie #
pokazaliśmy ci, jak używać poleceniafind
z różnymi opcjami i kryteriami.
Ten artykuł powinien dać ci podstawowe zrozumienie, jak zlokalizować pliki na swoich systemach Linux. Możesz również odwiedzić stronę podręcznikafind
I przeczytać o wszystkich innych potężnych opcjach polecenia find
.