Failide rekursiivne otsimine praegustest ja alamkataloogidest, kasutades Linuxis metamärke

Shell

Tõhus failiotsing Linuxis

Linuxiga töötades võib failide leidmine kataloogidest olla tavaline ja mõnikord keeruline ülesanne. Rekursiivsete otsingumeetodite ja metamärkide sobitamise kasutamine võib seda protsessi oluliselt lihtsustada. Need tööriistad on hindamatud nii algajatele kui ka edasijõudnutele, muutes failihalduse tõhusamaks.

Selles juhendis uurime, kuidas rekursiivselt leida kõiki praeguses kataloogis ja selle alamkataloogides olevaid faile kindlate metamärgimustrite alusel. Olenemata sellest, kas korraldate suuri andmekogumeid või proovite lihtsalt leida mõne faili asukohta, parandavad need meetodid teie käsurea oskusi.

Käsk Kirjeldus
find Otsib faile ja katalooge kataloogihierarhiast
-name Sobitab failid nende nime järgi, kasutades metamärki
os.walk Genereerib failinimed kataloogipuus, liikudes kas ülalt alla või alt üles
fnmatch.fnmatch Testib, kas failinimi või string vastab metamärgimustrile
param Määrab PowerShelli skriptide ja funktsioonide parameetrid
Get-ChildItem Toob üksused ühest või mitmest määratud asukohast
-Recurse Annab käsule kataloogide kaudu rekursiivse otsingu
-Filter Filtreerib üksused metamärki kasutades

Rekursiivse failiotsingu skriptide üksikasjalik selgitus

Esimene skript kasutab shelli skripti, et leida failid praegusest kataloogist ja selle alamkataloogidest antud metamärgimustri alusel. Skripti tõlgi täpsustamiseks algab see shebang-ga. Seejärel kontrollib skript, kas kasutaja esitas argumendina metamärgimustri, kasutades if [ $# -eq 0 ]. Kui ei, küsib see kasutajalt õiget kasutamist ja väljub. Kui muster on ette nähtud, kasutab skript failide otsimiseks käsku find koos valikuga -tüüpi f ja suvandit -nimi, et sobitada metamärgimustriga. Käsk find on väga tõhus failide rekursiivseks otsimiseks Unixi-põhistes süsteemides. Skript lõpeb exit 0-ga, mis näitab edukat täitmist.

Teine skript on Pythoni skript, mis otsib faile ka rekursiivselt metamärgimustri alusel. See algab moodulite os ja sys importimisega, mis on vajalikud operatsioonisüsteemiga suhtlemiseks ja käsurea argumentide käsitlemiseks. Skript kontrollib, kas kasutaja on sisestanud metamärgimustri; kui ei, siis prindib õige kasutuse ja väljub. os.walk kasutamine võimaldab skriptil läbida kataloogipuu. Iga leitud faili puhul kontrollib fnmatch.fnmatch, kas failinimi vastab metamärgimustrile, ja prindib sobivad failiteed. See skript on kasulik kasutajatele, kes eelistavad skriptimiseks Pythonit ja vajavad oma koodis suuremat paindlikkust ja loetavust.

Kolmas skript kasutab Windowsi süsteemides sarnase ülesande täitmiseks PowerShelli. Skript kasutab metamärgimustri parameetri määratlemiseks käsku param. Kui mustrit ei pakuta, küsib see kasutajat õige kasutamise kohta. cmdlet Get-ChildItem koos lipuga -Recurse hangib määratud asukohtadest üksused rekursiivselt. Parameeter -Filter rakendab kindlate failide sobitamiseks metamärgimustri. See skript sobib ideaalselt Windowsi keskkondades töötavatele kasutajatele, kasutades PowerShelli võimsaid ja mitmekülgseid skriptimisvõimalusi failide tõhusaks haldamiseks ja otsimiseks.

Rekursiivne failiotsing, kasutades käsku Find

Shell-skriptimine Linuxis

#!/bin/bash
# Script to recursively find files based on wildcard matching

# Check if the user has provided a wildcard pattern
if [ $# -eq 0 ]
then
  echo "Usage: $0 <wildcard-pattern>"
  exit 1
fi

# Find and print the files matching the pattern
find . -type f -name "$1"

exit 0

Pythoni skript rekursiivse failiotsingu jaoks

Pythoni skriptimine

import os
import sys

# Check if the user has provided a wildcard pattern
if len(sys.argv) != 2:
    print("Usage: python script.py <wildcard-pattern>")
    sys.exit(1)

# Get the wildcard pattern from the command line argument
pattern = sys.argv[1]

# Walk through the directory tree
for root, dirs, files in os.walk("."):
    for file in files:
        if fnmatch.fnmatch(file, pattern):
            print(os.path.join(root, file))

PowerShelli skript rekursiivse failiotsingu jaoks

PowerShelli skriptimine

# Check if the user has provided a wildcard pattern
param (
    [string]$pattern
)

if (-not $pattern) {
    Write-Host "Usage: .\script.ps1 -pattern '<wildcard-pattern>'"
    exit 1
}

# Get the files matching the pattern
Get-ChildItem -Recurse -File -Filter $pattern

Täiustatud tehnikad rekursiivseks failiotsinguks

Lisaks varem käsitletud põhilistele rekursiivsetele failiotsingu meetoditele on mitmeid täiustatud tehnikaid, mis võivad teie failide otsimise võimalusi Linuxis täiustada. Üks selline meetod hõlmab konkreetseid tekstimustreid sisaldavate failide otsimiseks käsu grep kasutamist koos käsuga find. Näiteks võite kasutada käsku find . -type f -name "*.txt" -exec grep "otsingu_tekst" {} + et leida kõik tekstifailid, mis sisaldavad stringi "otsingu_tekst". See on eriti kasulik arendajatele ja süsteemiadministraatoritele, kes peavad tõhusalt otsima suurtest koodibaasidest või logifailidest.

Teine võimas tööriist rekursiivseks failiotsinguks on fd, lihtne, kiire ja kasutajasõbralik alternatiiv funktsioonile find. fd sisaldab mõistlikke vaikeseadeid ja pakub intuitiivset süntaksit. Näiteks käsk fd "muster" otsib rekursiivselt mustrile vastavaid faile ja toetab vaikimisi regulaaravaldisi. Lisaks on fd paljudes stsenaariumides kiirem kui find, kuna see läbib paralleelselt failisüsteemi. Kasutajatele, kes vajavad kasutajasõbraliku liidesega täpsemaid otsingufunktsioone, võib fd olla suurepärane valik.

  1. Kuidas otsida rekursiivselt kindla laiendiga faile?
  2. Kasutage käsku find . -type f -name "*.extension", kus "laiend" on otsitav faililaiend.
  3. Kas ma saan otsida faile, mida on viimase 7 päeva jooksul muudetud?
  4. Jah, kasutage käsku find . -tüüpi f -mtime -7, et leida viimase 7 päeva jooksul muudetud faile.
  5. Kuidas teatud kataloogid otsingust välja jätta?
  6. Kataloogide välistamiseks kasutage valikut -prüne koos nupuga find, et välistada kataloogid, nt leida . -tee "./väljajätmise_kataloog" -pügamine -o -tüüp f -nimi "*.txt" -print.
  7. Kas faile on võimalik nende suuruse järgi otsida?
  8. Jah, kasuta leida. -tüüp f -suurus +100M, et leida üle 100 MB faile.
  9. Kuidas otsida faile, mille nimed vastavad regulaaravaldisele?
  10. Kasutage leida. -tüüpi f -regex ".*pattern.*", et otsida faile, mille nimed vastavad regulaaravaldisele.
  11. Kas ma saan kombineerida mitut otsingukriteeriumi?
  12. Jah, saate kriteeriume kombineerida, kasutades valikuid otsi, nt leida . -tüüp f -nimi "*.txt" -suurus +10M.
  13. Kuidas otsida peidetud faile rekursiivselt?
  14. Kasutage leida. peidetud failide otsimiseks tippige f -name ".".
  15. Kas on võimalik loetleda ainult kataloogid?
  16. Jah, kasuta leida. -tüüp d, et loetleda kõik kataloogid rekursiivselt.
  17. Kuidas ma saan leitud failide arvu üles lugeda?
  18. Lisa | wc -l käsule find, nt find . -tüüp f -nimi "*.txt" | wc -l.
  19. Kas ma saan piirata otsingu sügavust?
  20. Jah, kasutage valikut -maxdepth, nt find . -maxdepth 2 - tippige f, et piirata otsingut kahe tasemeni.

Täiustatud tehnikad rekursiivseks failiotsinguks

Lisaks varem käsitletud põhilistele rekursiivsetele failiotsingu meetoditele on mitmeid täiustatud tehnikaid, mis võivad teie failiotsingu võimalusi Linuxis täiustada. Üks selline meetod hõlmab käsk kombinatsioonis konkreetseid tekstimustreid sisaldavate failide otsimiseks. Näiteks võite kasutada et leida kõik tekstifailid, mis sisaldavad stringi "otsingu_tekst". See on eriti kasulik arendajatele ja süsteemiadministraatoritele, kes peavad tõhusalt otsima suurtest koodibaasidest või logifailidest.

Teine võimas tööriist rekursiivseks failiotsinguks on , lihtne, kiire ja kasutajasõbralik alternatiiv . kaasas mõistlikud vaikeseaded ja pakub intuitiivset süntaksit. Näiteks käsk fd "pattern" otsib rekursiivselt mustrile vastavaid faile ja toetab vaikimisi regulaaravaldisi. Lisaks on kiirem kui paljudes stsenaariumides selle paralleelse failisüsteemi läbimise tõttu. Kasutajatele, kes vajavad täpsemaid otsingufunktsioone koos kasutajasõbraliku liidesega, võib olla suurepärane valik.

Viimased mõtted rekursiivse failiotsingu kohta

Rekursiivse failiotsingu valdamine Linuxis on tõhusa failihalduse jaoks ülioluline, eriti keerulistes kataloogistruktuurides. Kasutades selliseid tööriistu nagu , ja alternatiive nagu , saavad kasutajad oma tootlikkust märkimisväärselt tõsta. Nende käskude mõistmine ja kasutamine võib säästa aega ja lihtsustada nii algajate kui ka kogenud kasutajate ülesandeid, tagades, et failide leidmine muutub lihtsaks protsessiks.