Rekursīva failu atrašana pašreizējā un apakšdirektorijā, izmantojot aizstājējzīmes operētājsistēmā Linux

Shell

Efektīva failu meklēšana operētājsistēmā Linux

Strādājot ar Linux, failu atrašana direktorijos var būt bieži sastopams un dažreiz sarežģīts uzdevums. Rekursīvās meklēšanas metožu un aizstājējzīmju atbilstības izmantošana var ievērojami vienkāršot šo procesu. Šie rīki ir nenovērtējami gan iesācējiem, gan pieredzējušiem lietotājiem, padarot failu pārvaldību efektīvāku.

Šajā rokasgrāmatā mēs izpētīsim, kā rekursīvi atrast visus failus pašreizējā direktorijā un tā apakšdirektorijās, pamatojoties uz konkrētiem aizstājējzīmju modeļiem. Neatkarīgi no tā, vai organizējat lielas datu kopas vai vienkārši mēģināt atrast dažus failus, šīs metodes uzlabos jūsu komandrindas prasmes.

Pavēli Apraksts
find Meklē failus un direktorijus direktoriju hierarhijā
-name Saskaņo failus pēc to nosaukuma, izmantojot aizstājējzīmju modeli
os.walk Ģenerē failu nosaukumus direktoriju kokā, ejot no augšas uz leju vai no apakšas uz augšu
fnmatch.fnmatch Pārbauda, ​​vai faila nosaukums vai virkne atbilst aizstājējzīmju modelim
param Definē PowerShell skriptu un funkciju parametrus
Get-ChildItem Izgūst vienumus vienā vai vairākās norādītajās vietās
-Recurse Uzdod komandai veikt rekursīvu meklēšanu direktorijos
-Filter Filtrē vienumus, izmantojot aizstājējzīmes izteiksmi

Detalizēts rekursīvo failu meklēšanas skriptu skaidrojums

Pirmais skripts izmanto čaulas skriptu, lai atrastu failus pašreizējā direktorijā un tā apakšdirektorijās, pamatojoties uz doto aizstājējzīmju modeli. Tas sākas ar shebang, lai norādītu skripta tulku. Pēc tam skripts pārbauda, ​​vai lietotājs kā argumentu ir norādījis aizstājējzīmju modeli, izmantojot if [ $# -eq 0 ]. Ja nē, tas pieprasa lietotājam pareizo lietojumu un iziet. Ja tiek nodrošināts modelis, skripts izmanto komandu find ar opciju -type f, lai meklētu failus, un opciju -name, lai atbilstu aizstājējzīmju modelim. Komanda find ir ļoti efektīva failu rekursīvai meklēšanai sistēmās, kuru pamatā ir Unix. Skripts beidzas ar exit 0, lai norādītu uz veiksmīgu izpildi.

Otrais skripts ir Python skripts, kas arī rekursīvi meklē failus, pamatojoties uz aizstājējzīmju modeli. Tas sākas ar os un sys moduļu importēšanu, kas nepieciešami mijiedarbībai ar operētājsistēmu un komandrindas argumentu apstrādei. Skripts pārbauda, ​​vai lietotājs ir norādījis aizstājējzīmju modeli; ja nē, tas izdrukā pareizo lietojumu un iziet. Izmantojot os.walk, skripts var šķērsot direktoriju koku. Katram atrastajam failam fnmatch.fnmatch pārbauda, ​​vai faila nosaukums atbilst aizstājējzīmju modelim, izdrukājot atbilstošos faila ceļus. Šis skripts ir noderīgs lietotājiem, kuri dod priekšroku Python skriptēšanai un kuriem ir nepieciešama lielāka elastība un lasāmība savā kodā.

Trešais skripts izmanto PowerShell, lai veiktu līdzīgu uzdevumu Windows sistēmās. Skripts izmanto param priekšrakstu, lai definētu aizstājējzīmju raksta parametru. Ja paraugs netiek nodrošināts, tas liek lietotājam pareizi lietot. cmdlet Get-ChildItem kopā ar karogu -Recurse rekursīvi izgūst vienumus noteiktās vietās. Parametrs -Filter lieto aizstājējzīmju modeli, lai tas atbilstu noteiktiem failiem. Šis skripts ir ideāli piemērots lietotājiem, kuri strādā Windows vidē, izmantojot PowerShell jaudīgās un daudzpusīgās skriptēšanas iespējas, lai efektīvi pārvaldītu un meklētu failus.

Rekursīvā failu meklēšana, izmantojot komandu Find

Shell skriptēšana operētājsistēmā 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 skripts rekursīvai failu meklēšanai

Python skriptēšana

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 skripts rekursīvai failu meklēšanai

PowerShell skriptēšana

# 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

Uzlabotas metodes rekursīvai failu meklēšanai

Papildus pamata rekursīvajām failu meklēšanas metodēm, kas tika apspriestas iepriekš, ir vairākas uzlabotas metodes, kas var uzlabot failu meklēšanas iespējas operētājsistēmā Linux. Viena no šādām metodēm ietver komandas grep izmantošanu kopā ar find, lai meklētu failus, kas satur noteiktus teksta modeļus. Piemēram, varat izmantot atrast . -type f -name "*.txt" -exec grep "search_text" {} +, lai atrastu visus teksta failus, kas satur virkni "search_text". Tas ir īpaši noderīgi izstrādātājiem un sistēmu administratoriem, kuriem nepieciešams efektīvi meklēt lielās kodu bāzēs vai žurnālfailos.

Vēl viens spēcīgs rīks rekursīvai failu meklēšanai ir fd — vienkārša, ātra un lietotājam draudzīga alternatīva atrašanai. fd nāk ar saprātīgiem noklusējuma iestatījumiem un nodrošina intuitīvu sintaksi. Piemēram, komanda fd "pattern" rekursīvi meklēs failus, kas atbilst modelim, un pēc noklusējuma tā atbalsta regulārās izteiksmes. Turklāt fd ir ātrāks par find daudzos scenārijos, jo tai ir paralēla failu sistēma. Lietotājiem, kuriem nepieciešamas uzlabotas meklēšanas funkcijas ar lietotājam draudzīgu saskarni, fd var būt lieliska izvēle.

  1. Kā rekursīvi meklēt failus ar noteiktu paplašinājumu?
  2. Izmantojiet komandu find . -type f -name "*.extension", kur "paplašinājums" ir faila paplašinājums, kuru meklējat.
  3. Vai es varu meklēt failus, kas ir mainīti pēdējo 7 dienu laikā?
  4. Jā, izmantojiet komandu find . -type f -mtime -7, lai atrastu pēdējo 7 dienu laikā modificētos failus.
  5. Kā no meklēšanas izslēgt noteiktus direktorijus?
  6. Izmantojiet opciju -apgriezt ar atrast, lai izslēgtu direktorijus, piemēram, atrast . -path "./exclude_dir" -apgriezt -o -type f -name "*.txt" -print.
  7. Vai ir iespējams meklēt failus pēc to lieluma?
  8. Jā, izmantojiet atrast. - tipa f - izmērs +100 M, lai atrastu failus, kas lielāki par 100 MB.
  9. Kā meklēt failus, kuru nosaukumi atbilst regulārai izteiksmei?
  10. Izmantojiet atrast. -type f -regex ".*pattern.*", lai meklētu failus ar nosaukumiem, kas atbilst regulārajai izteiksmei.
  11. Vai varu apvienot vairākus meklēšanas kritērijus?
  12. Jā, varat apvienot kritērijus, izmantojot opcijas atrast, piemēram, atrast . -type f -name "*.txt" -izmērs +10M.
  13. Kā rekursīvi meklēt slēptos failus?
  14. Izmantojiet atrast. - ierakstiet f -name ".", lai meklētu slēptos failus.
  15. Vai ir kāds veids, kā uzskaitīt tikai direktorijus?
  16. Jā, izmantojiet atrast. - ierakstiet d, lai rekursīvi uzskaitītu visus direktorijus.
  17. Kā es varu saskaitīt atrasto failu skaitu?
  18. Pievienot | wc -l uz komandu find, piemēram, find . -type f -name "*.txt" | wc -l.
  19. Vai es varu ierobežot meklēšanas dziļumu?
  20. Jā, izmantojiet opciju -maxdepth, piemēram, atrast . -maxdepth 2 - ierakstiet f, lai ierobežotu meklēšanu līdz 2 līmeņiem.

Uzlabotas metodes rekursīvai failu meklēšanai

Papildus pamata rekursīvajām failu meklēšanas metodēm, kas tika apspriestas iepriekš, ir vairākas uzlabotas metodes, kas var uzlabot failu meklēšanas iespējas operētājsistēmā Linux. Viena no šādām metodēm ietver izmantošanu komandu kombinācijā ar lai meklētu failus, kas satur noteiktus teksta modeļus. Piemēram, jūs varat izmantot lai atrastu visus teksta failus, kas satur virkni "search_text". Tas ir īpaši noderīgi izstrādātājiem un sistēmu administratoriem, kuriem nepieciešams efektīvi meklēt lielās kodu bāzēs vai žurnālfailos.

Vēl viens spēcīgs rīks rekursīvai failu meklēšanai ir , vienkārša, ātra un lietotājam draudzīga alternatīva . nāk ar saprātīgiem noklusējuma iestatījumiem un nodrošina intuitīvu sintaksi. Piemēram, komanda fd "pattern" rekursīvi meklēs failus, kas atbilst modelim, un pēc noklusējuma atbalsta regulārās izteiksmes. Turklāt ir ātrāks par daudzos scenārijos, pateicoties paralēlai failu sistēmas šķērsošanai. Lietotājiem, kuriem nepieciešamas uzlabotas meklēšanas funkcijas ar lietotājam draudzīgu saskarni, var būt lieliska izvēle.

Pēdējās domas par rekursīvo failu meklēšanu

Rekursīvās failu meklēšanas apguve operētājsistēmā Linux ir ļoti svarīga efektīvai failu pārvaldībai, īpaši sarežģītās direktoriju struktūrās. Izmantojot tādus rīkus kā , , un tādas alternatīvas kā , lietotāji var ievērojami uzlabot savu produktivitāti. Šo komandu izpratne un izmantošana var ietaupīt laiku un vienkāršot uzdevumus gan iesācējiem, gan pieredzējušiem lietotājiem, nodrošinot, ka failu atrašana kļūst par vienkāršu procesu.