Rekursyvus failų paieška dabartiniuose ir pakatalogiuose naudojant pakaitos simbolius Linux sistemoje

Rekursyvus failų paieška dabartiniuose ir pakatalogiuose naudojant pakaitos simbolius Linux sistemoje
Rekursyvus failų paieška dabartiniuose ir pakatalogiuose naudojant pakaitos simbolius Linux sistemoje

Veiksminga failų paieška Linux sistemoje

Dirbant su Linux, failų paieška kataloguose gali būti įprasta ir kartais sudėtinga užduotis. Naudojant rekursinius paieškos metodus ir pakaitos simbolių atitikimą galima žymiai supaprastinti šį procesą. Šios priemonės yra neįkainojamos tiek pradedantiesiems, tiek pažengusiems vartotojams, todėl failų valdymas tampa efektyvesnis.

Šiame vadove išnagrinėsime, kaip rekursyviai surasti visus failus dabartiniame kataloge ir jo pakatalogiuose, remiantis tam tikrais pakaitos simboliais. Nesvarbu, ar tvarkote didelius duomenų rinkinius, ar tiesiog bandote rasti kelis failus, šie metodai pagerins jūsų komandinės eilutės įgūdžius.

komandą apibūdinimas
find Ieško failų ir katalogų katalogų hierarchijoje
-name Suderina failus pagal jų pavadinimą, naudodamas pakaitos simbolių šabloną
os.walk Sugeneruoja failų pavadinimus katalogų medyje, eidamas iš viršaus į apačią arba iš apačios į viršų
fnmatch.fnmatch Tikrina, ar failo pavadinimas arba eilutė atitinka pakaitos simbolių šabloną
param Apibrėžia PowerShell scenarijų ir funkcijų parametrus
Get-ChildItem Nuskaito elementus vienoje ar keliose nurodytose vietose
-Recurse Nurodo komandai ieškoti rekursyviai kataloguose
-Filter Filtruoja elementus naudodamas pakaitos simbolio išraišką

Išsamus rekursinių failų paieškos scenarijų paaiškinimas

Pirmasis scenarijus naudoja apvalkalo scenarijų, kad surastų failus dabartiniame kataloge ir jo pakatalogiuose pagal nurodytą pakaitos simbolių šabloną. Jis prasideda shebang, kad būtų nurodytas scenarijaus interpretatorius. Tada scenarijus patikrina, ar vartotojas kaip argumentą pateikė pakaitos simbolių šabloną, naudodamas if [ $# -eq 0 ]. Jei ne, jis paragins vartotoją teisingai naudoti ir išeina. Jei pateikiamas šablonas, scenarijus naudoja komandą find su tipo f parinktimi, kad ieškotų failų, ir parinktį -name, kad atitiktų pakaitos simbolių šabloną. Komanda find yra labai efektyvi ieškant failų rekursyviai Unix sistemose. Scenarijus baigiamas exit 0, nurodant sėkmingą vykdymą.

Antrasis scenarijus yra Python scenarijus, kuris taip pat rekursyviai ieško failų pagal pakaitos simbolių šabloną. Jis pradedamas importuojant os ir sys modulius, kurie būtini norint sąveikauti su operacine sistema ir tvarkyti komandinės eilutės argumentus. Scenarijus patikrina, ar vartotojas pateikė pakaitos simbolių šabloną; jei ne, jis išspausdina teisingą naudojimą ir išeina. Naudojant os.walk, scenarijus gali pereiti katalogų medį. Kiekvieno rasto failo fnmatch.fnmatch patikrina, ar failo pavadinimas atitinka pakaitos simbolių šabloną, ir išspausdina atitinkamus failo kelius. Šis scenarijus yra naudingas vartotojams, kuriems scenarijus teikia pirmenybę Python ir kuriems reikia daugiau lankstumo ir skaitomumo savo kodui.

Trečiasis scenarijus naudoja PowerShell, kad atliktų panašią užduotį „Windows“ sistemose. Scenarijus naudoja sakinį param, kad apibrėžtų pakaitos simbolio šablono parametrą. Jei modelis nepateikiamas, jis ragina vartotoją teisingai naudoti. Get-ChildItem cmdlet kartu su žyma -Recurse rekursyviai nuskaito elementus nurodytose vietose. Parametras -Filter taiko pakaitos simbolių šabloną, kad atitiktų konkrečius failus. Šis scenarijus idealiai tinka vartotojams, dirbantiems „Windows“ aplinkoje, naudojant galingas ir universalias „PowerShell“ scenarijų sudarymo galimybes, siekiant efektyviai valdyti ir ieškoti failų.

Rekursinė failų paieška naudojant komandą Find

„Shell Scripting“ sistemoje „Linux“.

#!/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

Python scenarijus, skirtas rekursinei failų paieškai

Python scenarijus

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))

„PowerShell“ scenarijus, skirtas rekursinei failų paieškai

PowerShell scenarijus

# 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

Pažangūs rekursinės failų paieškos būdai

Be pagrindinių rekursinių failų paieškos metodų, aptartų anksčiau, yra keletas pažangių metodų, kurie gali pagerinti failų paieškos galimybes Linux sistemoje. Vienas iš tokių metodų apima komandos grep naudojimą kartu su find, kad būtų galima ieškoti failų, kuriuose yra specifinių teksto šablonų. Pavyzdžiui, galite naudoti rasti . -type f -name "*.txt" -exec grep "search_text" {} +, kad surastumėte visus tekstinius failus, kuriuose yra eilutė "search_text". Tai ypač naudinga kūrėjams ir sistemos administratoriams, kuriems reikia efektyviai ieškoti didelėse kodų bazėse arba žurnalo failuose.

Kitas galingas rekursinių failų paieškos įrankis yra fd, paprasta, greita ir patogi rasti alternatyva. fd pateikiami su protingais numatytais nustatymais ir pateikia intuityvią sintaksę. Pavyzdžiui, komanda fd "pattern" rekursyviai ieškos šabloną atitinkančių failų ir pagal numatytuosius nustatymus palaiko reguliariąsias išraiškas. Be to, daugelyje scenarijų fd yra greitesnis nei find dėl lygiagrečios failų sistemos perėjimo. Vartotojams, kuriems reikia išplėstinių paieškos funkcijų su patogia sąsaja, fd gali būti puikus pasirinkimas.

Dažni klausimai ir atsakymai apie rekursinę failų paiešką

  1. Kaip rekursyviai ieškoti failų su konkrečiu plėtiniu?
  2. Naudokite komandą rasti . -type f -name "*.extension" kur "plėtinys" yra failo plėtinys, kurio ieškote.
  3. Ar galiu ieškoti failų, kurie buvo modifikuoti per pastarąsias 7 dienas?
  4. Taip, naudokite komandą rasti . -įveskite f -mtime -7, kad rastumėte failus, pakeistus per pastarąsias 7 dienas.
  5. Kaip iš paieškos pašalinti tam tikrus katalogus?
  6. Norėdami išskirti katalogus, naudokite parinktį -slysti su rasti, pvz., rasti . -kelias "./exclude_dir" -genėti -o -type f -name "*.txt" -print.
  7. Ar galima ieškoti failų pagal jų dydį?
  8. Taip, naudokite rasti. - įveskite f - dydis +100M, kad rastumėte didesnius nei 100 MB failus.
  9. Kaip ieškoti failų, kurių pavadinimai atitinka reguliarųjį posakį?
  10. Naudokite rasti. -įveskite f -regex ".*pattern.*", jei norite ieškoti failų, kurių pavadinimai atitinka reguliariąją išraišką.
  11. Ar galiu derinti kelis paieškos kriterijus?
  12. Taip, kriterijus galite derinti naudodami parinktis rasti, pvz., rasti . -tipo f -pavadinimas "*.txt" -dydis +10M.
  13. Kaip rekursyviai ieškoti paslėptų failų?
  14. Naudokite rasti. -įveskite f -name "." norėdami ieškoti paslėptų failų.
  15. Ar yra būdas išvardyti tik katalogus?
  16. Taip, naudokite rasti. -įveskite d, jei norite rekursyviai išvardyti visus katalogus.
  17. Kaip suskaičiuoti rastų failų skaičių?
  18. Pridėti | wc -l į komandą rasti, pvz., rasti . -type f -name "*.txt" | wc -l.
  19. Ar galiu apriboti paieškos gylį?
  20. Taip, naudokite parinktį -maxdepth, pvz., rasti . -maxdepth 2 - įveskite f, kad apribotumėte paiešką iki 2 lygių gylio.

Pažangūs rekursinės failų paieškos būdai

Be pagrindinių rekursinių failų paieškos metodų, aptartų anksčiau, yra keletas pažangių metodų, kurie gali pagerinti failų paieškos galimybes Linux sistemoje. Vienas iš tokių metodų apima naudojimą grep komandą kartu su find ieškoti failų, kuriuose yra tam tikrų teksto šablonų. Pavyzdžiui, galite naudoti find . -type f -name "*.txt" -exec grep "search_text" {} + norėdami rasti visus tekstinius failus, kuriuose yra eilutė "search_text". Tai ypač naudinga kūrėjams ir sistemos administratoriams, kuriems reikia efektyviai ieškoti didelėse kodų bazėse arba žurnalo failuose.

Kitas galingas rekursinių failų paieškos įrankis yra fd, paprasta, greita ir patogi alternatyva find. fd ateina su protingais numatytais parametrais ir pateikia intuityvią sintaksę. Pavyzdžiui, komanda fd "pattern" rekursyviai ieškos šabloną atitinkančių failų ir pagal numatytuosius nustatymus palaiko reguliariąsias išraiškas. Be to, fd yra greitesnis nei find daugelyje scenarijų dėl lygiagrečios failų sistemos perėjimo. Vartotojams, kuriems reikia išplėstinių paieškos funkcijų su patogia sąsaja, fd gali būti puikus pasirinkimas.

Paskutinės mintys apie rekursinę failų paiešką

Norint efektyviai valdyti failus, ypač sudėtingose ​​katalogų struktūrose, labai svarbu įvaldyti rekursinę failų paiešką Linux sistemoje. Naudodami tokias priemones kaip find, grep, ir alternatyvos, pvz fd, vartotojai gali žymiai padidinti savo našumą. Šių komandų supratimas ir naudojimas gali sutaupyti laiko ir supaprastinti užduotis tiek pradedantiesiems, tiek patyrusiems vartotojams, užtikrinant, kad failų paieška taps nesudėtinga.