Rekurzivno pronalaženje datoteka u trenutnim i poddirektorijima korištenjem zamjenskih znakova na Linuxu

Shell

Učinkovito pretraživanje datoteka u Linuxu

Kada radite s Linuxom, pronalaženje datoteka u direktorijima može biti uobičajen i ponekad složen zadatak. Korištenje rekurzivnih metoda pretraživanja i podudaranja zamjenskih znakova može značajno pojednostaviti ovaj proces. Ovi su alati neprocjenjivi i za početnike i za napredne korisnike, jer upravljanje datotekama čine učinkovitijim.

U ovom ćemo vodiču istražiti kako rekurzivno locirati sve datoteke u trenutnom direktoriju i njegovim poddirektorijima na temelju specifičnih uzoraka zamjenskih znakova. Bilo da organizirate velike skupove podataka ili jednostavno pokušavate locirati nekoliko datoteka, ove će metode poboljšati vaše znanje naredbenog retka.

Naredba Opis
find Pretražuje datoteke i direktorije unutar hijerarhije direktorija
-name Usklađuje datoteke prema njihovom nazivu pomoću uzorka zamjenskog znaka
os.walk Generira nazive datoteka u stablu direktorija hodajući odozgo prema dolje ili odozdo prema gore
fnmatch.fnmatch Testira odgovara li naziv datoteke ili niz uzorku zamjenskog znaka
param Definira parametre za PowerShell skripte i funkcije
Get-ChildItem Dohvaća stavke na jednoj ili više navedenih lokacija
-Recurse Daje upute naredbi za rekurzivno pretraživanje kroz direktorije
-Filter Filtrira stavke pomoću zamjenskog izraza

Detaljno objašnjenje skripti za rekurzivno pretraživanje datoteka

Prva skripta koristi skriptu ljuske za pronalaženje datoteka u trenutnom direktoriju i njegovim poddirektorijima na temelju zadanog uzorka zamjenskih znakova. Započinje s shebang za navođenje tumača skripte. Skripta zatim provjerava je li korisnik dao uzorak zamjenskog znaka kao argument koristeći if [ $# -eq 0 ]. Ako nije, traži od korisnika ispravnu upotrebu i izlazi. Ako je naveden uzorak, skripta koristi naredbu find s opcijom -type f za traženje datoteka i opcijom -name za podudaranje s uzorkom zamjenskog znaka. Naredba find vrlo je učinkovita za rekurzivno pretraživanje datoteka u sustavima baziranim na Unixu. Skripta završava s exit 0 da označi uspješno izvršenje.

Druga skripta je Python skripta koja također traži datoteke rekurzivno na temelju uzorka zamjenskih znakova. Započinje uvozom modula os i sys, koji su neophodni za interakciju s operativnim sustavom i rukovanje argumentima naredbenog retka. Skripta provjerava je li korisnik dao uzorak zamjenskog znaka; ako nije, ispisuje točnu upotrebu i izlazi. Korištenje os.walk omogućuje skripti da pređe stablo direktorija. Za svaku pronađenu datoteku, fnmatch.fnmatch provjerava odgovara li naziv datoteke uzorku zamjenskih znakova, ispisujući odgovarajuće staze datoteke. Ova je skripta korisna za korisnike koji preferiraju Python za skriptiranje i trebaju više fleksibilnosti i čitljivosti u svom kodu.

Treća skripta koristi PowerShell za obavljanje sličnog zadatka na Windows sustavima. Skripta koristi naredbu param za definiranje parametra za uzorak zamjenskih znakova. Ako uzorak nije naveden, od korisnika se traži ispravna upotreba. Cmdlet Get-ChildItem, u kombinaciji s oznakom -Recurse, rekurzivno dohvaća stavke na određenim lokacijama. Parametar -Filter primjenjuje uzorak zamjenskih znakova za podudaranje s određenim datotekama. Ova je skripta idealna za korisnike koji rade u Windows okruženjima, iskorištavajući moćne i svestrane mogućnosti skriptiranja PowerShell-a za učinkovito upravljanje i pretraživanje datoteka.

Rekurzivno pretraživanje datoteka pomoću naredbe Find

Shell skriptiranje u Linuxu

#!/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 skripta za rekurzivno pretraživanje datoteka

Python skriptiranje

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 skripta za rekurzivno pretraživanje datoteka

PowerShell skriptiranje

# 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

Napredne tehnike za rekurzivno pretraživanje datoteka

Uz osnovne rekurzivne metode pretraživanja datoteka o kojima smo govorili ranije, postoji nekoliko naprednih tehnika koje mogu poboljšati vaše mogućnosti pretraživanja datoteka na Linuxu. Jedna takva metoda uključuje korištenje naredbe grep u kombinaciji s find za traženje datoteka koje sadrže određene tekstualne uzorke. Na primjer, možete koristiti nađi. -type f -name "*.txt" -exec grep "search_text" {} + za lociranje svih tekstualnih datoteka koje sadrže niz "search_text". Ovo je posebno korisno za programere i administratore sustava koji trebaju učinkovito pretraživati ​​velike baze kodova ili datoteke dnevnika.

Još jedan moćan alat za rekurzivno pretraživanje datoteka je fd, jednostavna, brza i razumljiva alternativa find. fd dolazi s razumnim zadanim postavkama i pruža intuitivnu sintaksu. Na primjer, naredba fd "pattern" će rekurzivno tražiti datoteke koje odgovaraju uzorku, a prema zadanim postavkama podržava regularne izraze. Dodatno, fd je brži od find u mnogim scenarijima zbog svog paraleliziranog obilaska datotečnog sustava. Za korisnike kojima su potrebne napredne značajke pretraživanja sa korisnički prilagođenim sučeljem, fd može biti izvrstan izbor.

  1. Kako rekurzivno pretraživati ​​datoteke s određenim nastavkom?
  2. Koristite naredbu pronađi. -type f -name "*.ekstenzija" gdje je "ekstenzija" ekstenzija datoteke koju tražite.
  3. Mogu li pretraživati ​​datoteke koje su izmijenjene u zadnjih 7 dana?
  4. Da, koristite naredbu nađi. -upišite f -mtime -7 da biste pronašli datoteke izmijenjene u zadnjih 7 dana.
  5. Kako mogu isključiti određene imenike iz pretraživanja?
  6. Koristite opciju -prune s find za izuzimanje direktorija, npr. find . -path "./exclude_dir" -prune -o -type f -name "*.txt" -print.
  7. Je li moguće pretraživati ​​datoteke po veličini?
  8. Da, koristite pronađi. -upišite f -veličina +100M za pronalaženje datoteka većih od 100MB.
  9. Kako mogu pretraživati ​​datoteke čiji nazivi odgovaraju regularnom izrazu?
  10. Koristite nađi. -tip f -regex ".*uzorak.*" za traženje datoteka čiji nazivi odgovaraju regularnom izrazu.
  11. Mogu li kombinirati više kriterija pretraživanja?
  12. Da, možete kombinirati kriterije pomoću opcija pronađi, npr. pronađi. -tip f -naziv "*.txt" -veličina +10M.
  13. Kako rekurzivno pretraživati ​​skrivene datoteke?
  14. Koristite nađi. -upišite f -name "." za traženje skrivenih datoteka.
  15. Postoji li način za popis samo imenika?
  16. Da, koristite pronađi. -upišite d za rekurzivni popis svih direktorija.
  17. Kako mogu izbrojati pronađene datoteke?
  18. Dodaj | wc -l na naredbu find, npr. find . -tip f -naziv "*.txt" | wc -l.
  19. Mogu li ograničiti dubinu pretraživanja?
  20. Da, upotrijebite opciju -maxdepth, npr. pronađi. -maxdepth 2 -upišite f da ograničite pretragu na 2 razine dubine.

Napredne tehnike za rekurzivno pretraživanje datoteka

Uz osnovne rekurzivne metode pretraživanja datoteka o kojima smo govorili ranije, postoji nekoliko naprednih tehnika koje mogu poboljšati vaše mogućnosti pretraživanja datoteka na Linuxu. Jedna takva metoda uključuje korištenje naredba u kombinaciji s za traženje datoteka koje sadrže određene uzorke teksta. Na primjer, možete koristiti za lociranje svih tekstualnih datoteka koje sadrže niz "search_text". Ovo je posebno korisno za programere i administratore sustava koji trebaju učinkovito pretraživati ​​velike baze kodova ili datoteke dnevnika.

Još jedan moćan alat za rekurzivno pretraživanje datoteka je , jednostavna, brza i korisniku prilagođena alternativa . dolazi s razumnim zadanim postavkama i pruža intuitivnu sintaksu. Na primjer, naredba fd "pattern" rekurzivno će tražiti datoteke koje odgovaraju uzorku, a prema zadanim postavkama podržava regularne izraze. Dodatno, je brži od u mnogim scenarijima zbog svog paraleliziranog prolaska sustava datoteka. Za korisnike kojima su potrebne napredne značajke pretraživanja sa korisnički prilagođenim sučeljem, može biti odličan izbor.

Završne misli o rekurzivnom pretraživanju datoteka

Ovladavanje rekurzivnim pretraživanjem datoteka u Linuxu ključno je za učinkovito upravljanje datotekama, posebno u složenim strukturama direktorija. Korištenjem alata kao što su , , i alternative poput , korisnici mogu značajno povećati svoju produktivnost. Razumijevanje i korištenje ovih naredbi može uštedjeti vrijeme i pojednostaviti zadatke za početnike i iskusne korisnike, osiguravajući da lociranje datoteka postane jednostavan proces.