Fájlok keresése Linuxban a parancssor segítségével A

find egy parancs a fájlrendszer objektumainak rekurzív szűrésére egy egyszerű feltételes mechanizmus alapján. A find parancs segítségével kereshet egy fájlt vagy könyvtárat a fájlrendszerben. A -exec jelző használatával a fájlok megtalálhatók és azonnal feldolgozhatók ugyanazon parancson belül.

Find Linux Files by Name or Extension

A parancssorból a find segítségével kereshet egy adott fájlt név vagy kiterjesztés alapján. A következő példa *.err fájlokat keres a /home/username/ könyvtárban és az összes alkönyvtárban:

find /home/username/ -name "*.err"

A konzolon hasonló kimenetet kell látnia:

 /home/username/example.errThe matching file in the /home/username/ directory is "example.err"

Gyakori Linux keresési parancsok és szintaxis

A find parancs általában a következő formában jelenik meg:

find options starting/path expression
  • A options attribútum szabályozza a find folyamat viselkedését és optimalizálási módszerét.
  • A starting/path attribútum határozza meg a legfelső szintű könyvtárat, ahol a find elkezdi a szűrést.
  • A expression attribútum vezérli azokat a teszteket, amelyek a könyvtárhierarchiában keresnek a kimenet előállításához.

Fájl keresése Linuxban a fájlnév segítségével

A fájl kereséséhez a fájlnév segítségével a find -name filename szintaxist használja. Az elérési út elhagyásával a teljes lemezen keresi a fájlt. Például egy example.err nevű, a /home/username könyvtárban található fájlt a következő paranccsal találhat meg:

find -name example.err

Egy hasonló kimenetet kell látnia:

 ./username/example.err

Fájl keresése az aktuális könyvtárban a Keresés parancs segítségével

Nézze meg a példa könyvtárszerkezetét és a fájlokat. Ezekre az útmutató példáiban végig hivatkozunk.

 ├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err├── directory_2│ └── example.err├── directory_3│ └── example.err├── image01.png├── web_files│ ├── app.html│ ├── cb=gapi.loaded_0│ ├── edit.html│ ├── m=_b,_tp│ ├── rs=AA2YrTtgyE1yYXiu-GuLS6sbJdYr0u8VBQ│ ├── rs=AA2YrTvod91nzEJFOvvfJUrn6_vLwwY0bw│ ├── saved_resource.html│ ├── single.html│ └── unnamed.jpg├── web.html└── example.err

Ha az directory_1 könyvtárban van, és a example.err fájlt szeretné megtalálni a könyvtárban vagy annak bármelyik alkönyvtárában, akkor a következő parancsot adhatja ki:

find . -name example.err

A kimenete a következőhöz hasonlít:

 ./example.err./directory_1/example.err

A kimenet a directory_1 könyvtárszerkezetet tükrözi:

 ├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err

Képfájlok keresése Linuxban a parancssor segítségével

Az előző szakaszban szereplő fájlszerkezetre hivatkozva, van egy image01.png nevű kép, amely a könyvtárszerkezet gyökerében (/)s található.

A image01.png fájl megkereséséhez futtassa a következő find parancsot, amely a / könyvtáron belül tárolt összes .png fájlt megkeresi.

find -name *.png

Hasonló kimenetet kell látnia:

 ./image01.png

Változtassa meg a képfájl típusát, és keressen minden .jpg fájlt a gyökérkönyvtárban (/):

find -name *.jpg

A kimenet hasonlít a példához. A fájl helyének megtekintéséhez tekintse meg az előző szakaszban található példakönyvtárszerkezetet.

 ./web_files/unnamed.jpg

Üres fájl keresése a könyvtárban a parancssor segítségével

A könyvtárban lévő üres fájl kereséséhez a parancssor segítségével adja ki a következő parancsot:

find . -type f -empty

Ha nem érkezik vissza kimenet, akkor nincs üres fájl az aktuális könyvtárban.

Fájlok keresésének beállításai és optimalizálásai Linuxban a parancssor segítségével

A find alapértelmezett beállítása figyelmen kívül hagyja a szimbolikus hivatkozásokat. Ha azt szeretné, hogy a find kövesse és visszaadja a szimbolikus hivatkozásokat, adja hozzá a -L opciót a parancshoz az alábbiak szerint:

find -O3 -L /var/www/ -name "*.html"

Ez a parancs engedélyezi a maximális optimalizálási szintet (-O3), és lehetővé teszi, hogy a find kövesse a szimbolikus hivatkozásokat (-L). A find a /var/www/ alatti teljes könyvtárfát átkutatja a .html végű fájlok után.

find optimalizálja a szűrési stratégiáját a teljesítmény növelése érdekében. Három, a felhasználó által választható optimalizálási szint van megadva: -O1, -O2 és -O3. Az -O1 optimalizálás az alapértelmezett, és arra kényszeríti a find-t, hogy az összes többi teszt lefuttatása előtt a fájlnév alapján szűrjön.

A -O2 szintű optimalizálás a -O1 szinthez hasonlóan a fájlnév-szűrést helyezi előtérbe, majd az összes fájltípus-szűrést lefuttatja, mielőtt más, erőforrás-igényesebb feltételekkel folytatná. A -O3 szintű optimalizálás lehetővé teszi a find legsúlyosabb optimalizálást, és az összes tesztet a relatív költségük és a sikerük valószínűsége alapján rendezi át.

Parancs leírás
-O1 A fájlnév alapján szűr először (alapértelmezett).
-O2 Először a fájlnév, majd a fájltípus.
-O3 Megengedi find a keresés automatikus átrendezését az erőforrások hatékony felhasználása és a valószínűség alapján. sikeresség
-maxdepth X Keresés az aktuális könyvtárban, valamint az összes X szint mélységű alkönyvtárban.
-iname Keresés a szöveges eset figyelembevétele nélkül.
-not Csak olyan eredményeket ad vissza, amelyek nem felelnek meg a tesztesetnek.
-type f Fájlok keresése.
-type d Könyvtárak keresése.

Fájlok keresése Linuxban a módosítás ideje alapján a parancssor segítségével

A find parancs a könyvtárhierarchiát a fájl utolsó módosításának időpontja alapján szűrheti. A következő parancs például minden olyan .err kiterjesztésű fájlt megtalál, amelyet az elmúlt 7 napban módosítottak:

find / -name "*err" -mtime -7

A példaparancs a következő kimenetet adja vissza:

 /home/username/directory_3/example.err/home/username/username/example.err/home/username/username/directory_2/example.err/home/username/username/directory_1/example.err/home/username/username/directory_1/subdirectory_1/example.err

A Grep használata fájlok keresésére Linuxban a parancssor használatával

A find parancs csak a fájl neve és metaadatai alapján képes szűrni a könyvtárhierarchiát. Ha a fájl tartalma alapján kell keresni, használjon egy olyan eszközt, mint aegrep. Tekintsük a következő példát:

find . -type f -exec grep "test" '{}' \; -print

Ez a parancs az aktuális könyvtárhierarchiában (.) minden olyan objektumot megkeres, amely fájl (-type f), majd lefuttatja a grep "test" parancsot minden olyan fájlra, amely megfelel a feltételeknek. A megfelelő fájlok a képernyőre (-print) kerülnek kiírásra. A szögletes zárójelek ({}) a keresési találat eredményének helyőrzője. A {} szimpla idézőjelekbe van zárva ('), hogy ne adjunk át grep rosszul formált fájlnevet. A -exec parancsot pontosvesszővel (;) fejezzük be, amit a héj értelmezésének elkerülése végett el kell kerülni (\;).

A példában használt fájlban (example.err) a “test” feliratú szöveg van. A példa parancsának futtatásakor hasonló kimenetet látunk:

 test./directory_3/example.errtest./example.errtest./directory_2/example.errtest./directory_1/example.errtest./directory_1/subdirectory_1/example.err

A Grep azonosított minden olyan fájlt az aktuális munkakönyvtárban, amely a “test” karakterláncot tartalmazza.

Megjegyzés

A find parancs -exec opciójának implementálása előtt a fenti példához hasonló kimenetet tudott létrehozni a xargs parancs segítségével:

find . -type f -print | xargs grep "test"

Fájlok feldolgozása és keresése a Find parancs segítségével Linuxban

A -exec opció minden olyan objektummal szemben futtat parancsokat, amely megfelel a find kifejezésnek. Tekintsük a következő példát:

find . -name "example.err" -exec chmod o+r '{}' \;

Ez az aktuális hierarchia (.) minden objektumát kiszűri a rc.conf nevű fájlokra, és lefuttatja a chmod o+r parancsot a find parancs eredményeinek fájlengedélyeinek módosítására.

A példaparancs a -exec opciót a find folyamat gyökérkönyvtárában futtatja és hajtja végre. A -execdir paranccsal a megadott parancsot abban a könyvtárban hajthatja végre, ahol a találat található. Ez enyhítheti a biztonsági aggályokat és jobb teljesítményt eredményezhet bizonyos műveleteknél.

A -exec vagy -execdir opciók további kérés nélkül futnak. Ha jobban szeretné, hogy a művelet végrehajtása előtt kérdezzenek, helyettesítse a -exec opciót -ok-vel vagy a -execdir opciót -okdir-vel.

How to Find and Delete Files Using the Linux Command Line

Caution

Az opciót rendkívül óvatosan használja.

Adja hozzá a -delete opciót a megfelelő kifejezés végéhez az összes megfelelő fájl törléséhez. Akkor használja ezt az opciót, ha biztos benne, hogy az eredmények csak a törölni kívánt fájlokkal egyeznek meg.

Az alábbi példában a find rekurzív módon megkeresi az összes fájlt a hierarchiában, kezdve az aktuális könyvtárral, és törli az összes .err kiterjesztéssel végződő fájlt:

find . -name "*.err" -delete

Még mindig van néhány kérdése?

Lépjen be a Közösségünkbe, és tegye fel kérdéseit, hogy más Linode- és Linux-rajongók segíthessenek Önnek.

Kapcsolódó kérdések:

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.