Trobar de manera recursiva fitxers als subdirectoris actuals i utilitzant comodins a Linux

Shell

Cerca eficient de fitxers a Linux

Quan es treballa amb Linux, trobar fitxers entre directoris pot ser una tasca comuna i de vegades complexa. L'ús de mètodes de cerca recursius i la concordança de comodins pot agilitzar aquest procés de manera significativa. Aquestes eines són inestimables tant per als usuaris novells com per als avançats, la qual cosa fa que la gestió de fitxers sigui més eficient.

En aquesta guia, explorarem com localitzar de forma recursiva tots els fitxers del directori actual i els seus subdirectoris en funció de patrons de comodins específics. Tant si esteu organitzant grans conjunts de dades com si simplement intenteu localitzar uns quants fitxers, aquests mètodes milloraran la vostra competència de la línia d'ordres.

Comandament Descripció
find Cerca fitxers i directoris dins de la jerarquia de directoris
-name Relaciona els fitxers pel seu nom mitjançant un patró de comodí
os.walk Genera els noms dels fitxers en un arbre de directoris caminant de dalt a baix o de baix a dalt
fnmatch.fnmatch Comprova si un nom de fitxer o una cadena coincideix amb un patró de comodí
param Defineix paràmetres per a scripts i funcions de PowerShell
Get-ChildItem Recupera els elements en una o més ubicacions especificades
-Recurse Indica a l'ordre que cerqui recursivament als directoris
-Filter Filtra els elements mitjançant una expressió comodí

Explicació detallada dels scripts de cerca de fitxers recursius

El primer script utilitza un script d'intèrpret d'ordres per trobar fitxers al directori actual i els seus subdirectoris basats en un patró de comodí donat. Comença amb un shebang per especificar l'intèrpret de l'script. A continuació, l'script comprova si l'usuari ha proporcionat un patró de comodí com a argument utilitzant if [$# -eq 0]. Si no, demana a l'usuari l'ús correcte i surt. Si es proporciona un patró, l'script utilitza l'ordre find amb l'opció -type f per cercar fitxers i l'opció -name per fer coincidir el patró comodí. L'ordre find és molt eficient per cercar fitxers de manera recursiva en sistemes basats en Unix. L'script conclou amb exit 0 per indicar l'execució correcta.

El segon script és un script de Python que també cerca fitxers de forma recursiva basant-se en un patró de comodí. Comença important els mòduls os i sys, que són necessaris per interactuar amb el sistema operatiu i gestionar els arguments de la línia d'ordres. L'script comprova si l'usuari ha proporcionat un patró de comodí; si no, imprimeix l'ús correcte i surt. L'ús de os.walk permet que l'script travessi l'arbre de directoris. Per a cada fitxer trobat, fnmatch.fnmatch comprova si el nom del fitxer coincideix amb el patró de comodí, imprimint els camins de fitxer coincidents. Aquest script és útil per als usuaris que prefereixen Python per fer scripts i necessiten més flexibilitat i llegibilitat en el seu codi.

El tercer script utilitza PowerShell per realitzar una tasca similar als sistemes Windows. L'script utilitza la instrucció param per definir un paràmetre per al patró de comodí. Si no es proporciona el patró, demana a l'usuari l'ús correcte. El cmdlet Get-ChildItem, combinat amb la marca -Recurse, recupera els elements en ubicacions especificades de manera recursiva. El paràmetre -Filter aplica el patró de comodí per fer coincidir fitxers específics. Aquest script és ideal per als usuaris que treballen en entorns Windows, aprofitant les potents i versàtils capacitats de scripting de PowerShell per gestionar i cercar fitxers de manera eficient.

Cerca recursiva de fitxers mitjançant l'ordre Find

Shell Scripting a 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

Script Python per a la cerca recursiva de fitxers

Scripting Python

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

Script de PowerShell per a la cerca recursiva de fitxers

Scripts de PowerShell

# 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ècniques avançades per a la cerca recursiva de fitxers

A més dels mètodes bàsics de cerca de fitxers recursius comentats anteriorment, hi ha diverses tècniques avançades que poden millorar les vostres capacitats de cerca de fitxers a Linux. Un d'aquests mètodes consisteix a utilitzar l'ordre grep en combinació amb find per cercar fitxers que continguin patrons de text específics. Per exemple, podeu utilitzar find. -type f -name "*.txt" -exec grep "search_text" {} + per localitzar tots els fitxers de text que contenen la cadena "search_text". Això és especialment útil per als desenvolupadors i administradors de sistemes que necessiten cercar a través de bases de codi grans o fitxers de registre de manera eficient.

Una altra eina poderosa per a cerques recursives de fitxers és fd, una alternativa senzilla, ràpida i fàcil d'utilitzar a find. fd inclou valors predeterminats sensibles i proporciona una sintaxi intuïtiva. Per exemple, l'ordre fd "patró" buscarà de forma recursiva els fitxers que coincideixin amb el patró i admet expressions regulars per defecte. A més, fd és més ràpid que find en molts escenaris a causa del seu recorregut paral·lelitzat del sistema de fitxers. Per als usuaris que necessiten funcions de cerca avançades amb una interfície fàcil d'utilitzar, fd pot ser una opció excel·lent.

  1. Com puc cercar fitxers amb una extensió específica de forma recursiva?
  2. Utilitzeu l'ordre find. -type f -name "*.extension" on "extension" és l'extensió de fitxer que esteu cercant.
  3. Puc cercar fitxers que s'han modificat durant els darrers 7 dies?
  4. Sí, utilitzeu l'ordre find. -escriviu f -mtime -7 per trobar fitxers modificats en els darrers 7 dies.
  5. Com puc excloure determinats directoris de la cerca?
  6. Utilitzeu l'opció -prune amb find per excloure directoris, p. ex., find . -path "./exclude_dir" -prune -o -type f -name "*.txt" -print.
  7. És possible cercar fitxers per la seva mida?
  8. Sí, utilitzeu trobar. -escriviu f -size +100 M per trobar fitxers de més de 100 MB.
  9. Com puc cercar fitxers amb noms que coincideixin amb una expressió regular?
  10. Utilitzeu trobar. -type f -regex ".*pattern.*" per cercar fitxers amb noms que coincideixin amb l'expressió regular.
  11. Puc combinar diversos criteris de cerca?
  12. Sí, podeu combinar criteris mitjançant les opcions trobar, p. ex., trobar . -tipus f -nom "*.txt" -mida +10M.
  13. Com puc cercar fitxers ocults de forma recursiva?
  14. Utilitzeu trobar. -type f -name ".*" per cercar fitxers ocults.
  15. Hi ha alguna manera d'enumerar només els directoris?
  16. Sí, utilitzeu trobar. -escriviu d per llistar tots els directoris de manera recursiva.
  17. Com puc comptar el nombre de fitxers trobats?
  18. Afegeix | wc -l a l'ordre find, p. ex., find . -tipus f -nom "*.txt" | wc -l.
  19. Puc limitar la profunditat de la cerca?
  20. Sí, utilitzeu l'opció -maxdepth, p. ex., find . -maxdepth 2 -escriviu f per limitar la cerca a 2 nivells de profunditat.

Tècniques avançades per a la cerca recursiva de fitxers

A més dels mètodes bàsics de cerca recursiva de fitxers comentats anteriorment, hi ha diverses tècniques avançades que poden millorar les vostres capacitats de cerca de fitxers a Linux. Un d'aquests mètodes consisteix a utilitzar el comanda en combinació amb per cercar fitxers que continguin patrons de text específics. Per exemple, podeu utilitzar per localitzar tots els fitxers de text que contenen la cadena "cerca_text". Això és especialment útil per als desenvolupadors i administradors de sistemes que necessiten cercar a través de bases de codi grans o fitxers de registre de manera eficient.

Una altra eina poderosa per a cerques recursives de fitxers és , una alternativa senzilla, ràpida i fàcil d'utilitzar . ve amb valors predeterminats sensibles i proporciona una sintaxi intuïtiva. Per exemple, l'ordre fd "pattern" cercarà recursivament fitxers que coincideixin amb el patró i admet expressions regulars per defecte. A més, és més ràpid que en molts escenaris a causa del seu recorregut paral·lelitzat del sistema de fitxers. Per als usuaris que necessiten funcions de cerca avançades amb una interfície fàcil d'utilitzar, pot ser una excel·lent opció.

Consideracions finals sobre la cerca recursiva de fitxers

Dominar la cerca recursiva de fitxers a Linux és crucial per a una gestió eficient de fitxers, especialment en estructures de directoris complexes. Aprofitant eines com , , i alternatives com , els usuaris poden millorar significativament la seva productivitat. Comprendre i utilitzar aquestes ordres pot estalviar temps i simplificar les tasques tant per als usuaris novells com per als experimentats, assegurant que la localització de fitxers es converteixi en un procés senzill.