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
- Gyakori Linux keresési parancsok és szintaxis
- Fájl keresése Linuxban a fájlnév segítségével
- Fájl keresése az aktuális könyvtárban a Keresés parancs segítségével
- Képfájlok keresése Linuxban a parancssor segítségével
- Üres fájl keresése a könyvtárban a parancssor segítségével
- Fájlok keresésének beállításai és optimalizálásai Linuxban a parancssor segítségével
- Fájlok keresése Linuxban a módosítás ideje alapján a parancssor segítségével
- A Grep használata fájlok keresésére Linuxban a parancssor használatával
- Fájlok feldolgozása és keresése a Find parancs segítségével Linuxban
- How to Find and Delete Files Using the Linux Command Line
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 afind
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 afind
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 axargs
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: