Recursief bestanden zoeken in huidige en submappen met behulp van jokertekens op Linux

Recursief bestanden zoeken in huidige en submappen met behulp van jokertekens op Linux
Recursief bestanden zoeken in huidige en submappen met behulp van jokertekens op Linux

Efficiënt zoeken naar bestanden in Linux

Bij het werken met Linux kan het vinden van bestanden in verschillende mappen een veel voorkomende en soms complexe taak zijn. Het gebruik van recursieve zoekmethoden en jokertekens kan dit proces aanzienlijk stroomlijnen. Deze tools zijn van onschatbare waarde voor zowel beginnende als gevorderde gebruikers, waardoor bestandsbeheer efficiënter wordt.

In deze handleiding onderzoeken we hoe u alle bestanden in de huidige map en de submappen ervan recursief kunt lokaliseren op basis van specifieke jokertekenpatronen. Of u nu grote datasets organiseert of eenvoudigweg een paar bestanden probeert te lokaliseren, deze methoden zullen uw vaardigheid op het gebied van de opdrachtregel vergroten.

Commando Beschrijving
find Zoekt naar bestanden en mappen binnen de maphiërarchie
-name Matcht bestanden op naam met behulp van een jokertekenpatroon
os.walk Genereert de bestandsnamen in een directorystructuur door van boven naar beneden of van onder naar boven te lopen
fnmatch.fnmatch Test of een bestandsnaam of tekenreeks overeenkomt met een jokertekenpatroon
param Definieert parameters voor PowerShell-scripts en -functies
Get-ChildItem Haalt de items op op een of meer opgegeven locaties
-Recurse Instrueert de opdracht om recursief door mappen te zoeken
-Filter Filtert items met behulp van een jokertekenexpressie

Gedetailleerde uitleg van recursieve scripts voor het zoeken naar bestanden

Het eerste script maakt gebruik van een shellscript om bestanden in de huidige map en de submappen ervan te vinden op basis van een bepaald jokertekenpatroon. Het begint met een shebang om de tolk van het script aan te geven. Het script controleert vervolgens of de gebruiker een jokertekenpatroon als argument heeft opgegeven met behulp van if [ $# -eq 0 ]. Als dit niet het geval is, wordt de gebruiker om het juiste gebruik gevraagd en wordt het programma afgesloten. Als er een patroon is opgegeven, gebruikt het script de opdracht find met de optie -type f om naar bestanden te zoeken en de optie -name om overeen te komen met het jokertekenpatroon. De opdracht find is zeer efficiënt voor het recursief zoeken naar bestanden in op Unix gebaseerde systemen. Het script eindigt met exit 0 om een ​​succesvolle uitvoering aan te geven.

Het tweede script is een Python-script dat ook recursief naar bestanden zoekt op basis van een jokertekenpatroon. Het begint met het importeren van de modules os en sys, die nodig zijn voor interactie met het besturingssysteem en voor het verwerken van opdrachtregelargumenten. Het script controleert of de gebruiker een jokertekenpatroon heeft opgegeven; Als dat niet het geval is, wordt het juiste gebruik afgedrukt en wordt het afgesloten. Door os.walk te gebruiken, kan het script de directorystructuur doorlopen. Voor elk gevonden bestand controleert fnmatch.fnmatch of de bestandsnaam overeenkomt met het jokertekenpatroon, waarbij de overeenkomende bestandspaden worden afgedrukt. Dit script is handig voor gebruikers die de voorkeur geven aan Python voor scripting en meer flexibiliteit en leesbaarheid in hun code nodig hebben.

Het derde script gebruikt PowerShell om een ​​vergelijkbare taak uit te voeren op Windows-systemen. Het script gebruikt de instructie param om een ​​parameter voor het jokertekenpatroon te definiëren. Als het patroon niet wordt verstrekt, wordt de gebruiker gevraagd naar het juiste gebruik. De cmdlet Get-ChildItem, gecombineerd met de vlag -Recurse, haalt items op opgegeven locaties recursief op. De parameter -Filter past het jokertekenpatroon toe om specifieke bestanden te matchen. Dit script is ideaal voor gebruikers die in Windows-omgevingen werken en maakt gebruik van de krachtige en veelzijdige scriptmogelijkheden van PowerShell om bestanden efficiënt te beheren en te zoeken.

Recursief zoeken naar bestanden met de opdracht Zoeken

Shell-scripting in 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-script voor recursief zoeken naar bestanden

Python-scripting

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-script voor recursief zoeken naar bestanden

PowerShell-scripting

# 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

Geavanceerde technieken voor recursief zoeken naar bestanden

Naast de basismethoden voor het recursief zoeken naar bestanden die eerder zijn besproken, zijn er verschillende geavanceerde technieken die uw mogelijkheden voor het zoeken naar bestanden onder Linux kunnen verbeteren. Eén zo'n methode omvat het gebruik van de opdracht grep in combinatie met find om te zoeken naar bestanden die specifieke tekstpatronen bevatten. U kunt bijvoorbeeld find gebruiken. -type f -name "*.txt" -exec grep "search_text" {} + om alle tekstbestanden te lokaliseren die de string "search_text" bevatten. Dit is vooral handig voor ontwikkelaars en systeembeheerders die efficiënt door grote codebases of logbestanden moeten zoeken.

Een ander krachtig hulpmiddel voor het recursief zoeken naar bestanden is fd, een eenvoudig, snel en gebruiksvriendelijk alternatief voor find. fd wordt geleverd met verstandige standaardinstellingen en biedt een intuïtieve syntaxis. Het commando fd "pattern" zoekt bijvoorbeeld recursief naar bestanden die overeenkomen met het patroon, en ondersteunt standaard reguliere expressies. Bovendien is fd in veel scenario's sneller dan find vanwege de parallelle bestandssysteemtraversal. Voor gebruikers die geavanceerde zoekfuncties met een gebruiksvriendelijke interface nodig hebben, kan fd een uitstekende keuze zijn.

Veelgestelde vragen en antwoorden over recursief zoeken naar bestanden

  1. Hoe zoek ik recursief naar bestanden met een specifieke extensie?
  2. Gebruik het commando vinden. -type f -naam "*.extensie" waarbij "extensie" de bestandsextensie is die u zoekt.
  3. Kan ik zoeken naar bestanden die in de afgelopen zeven dagen zijn gewijzigd?
  4. Ja, gebruik het commando find . -type f -mtime -7 om bestanden te vinden die in de afgelopen 7 dagen zijn gewijzigd.
  5. Hoe sluit ik bepaalde mappen uit van de zoekopdracht?
  6. Gebruik de optie -prune met find om mappen uit te sluiten, bijvoorbeeld find . -pad "./exclude_dir" -prune -o -type f -naam "*.txt" -print.
  7. Is het mogelijk om bestanden op grootte te zoeken?
  8. Ja, gebruik find . -type f -size +100M om bestanden te vinden die groter zijn dan 100 MB.
  9. Hoe zoek ik naar bestanden met namen die overeenkomen met een reguliere expressie?
  10. Gebruik vinden. -type f -regex ".*pattern.*" om te zoeken naar bestanden met namen die overeenkomen met de reguliere expressie.
  11. Kan ik meerdere zoekcriteria combineren?
  12. Ja, u kunt criteria combineren met behulp van find-opties, bijvoorbeeld find . -type f -naam "*.txt" -grootte +10M.
  13. Hoe zoek ik recursief naar verborgen bestanden?
  14. Gebruik vinden. -type f -naam ".*" om naar verborgen bestanden te zoeken.
  15. Is er een manier om alleen de mappen weer te geven?
  16. Ja, gebruik finden . -type d om alle mappen recursief weer te geven.
  17. Hoe kan ik het aantal gevonden bestanden tellen?
  18. Voeg | toe wc -l naar de opdracht find, bijvoorbeeld find . -type f -naam "*.txt" | wc -l.
  19. Kan ik de diepgang van de zoekopdracht beperken?
  20. Ja, gebruik de optie -max Depth, bijvoorbeeld find . -maxdiepte 2 -type f om de zoekopdracht te beperken tot 2 niveaus diep.

Geavanceerde technieken voor recursief zoeken naar bestanden

Naast de basismethoden voor het recursief zoeken naar bestanden die eerder zijn besproken, zijn er verschillende geavanceerde technieken die uw mogelijkheden voor het zoeken naar bestanden onder Linux kunnen verbeteren. Eén zo'n methode omvat het gebruik van de grep commando in combinatie met find om te zoeken naar bestanden die specifieke tekstpatronen bevatten. U kunt bijvoorbeeld gebruiken find . -type f -name "*.txt" -exec grep "search_text" {} + om alle tekstbestanden te vinden die de string "search_text" bevatten. Dit is vooral handig voor ontwikkelaars en systeembeheerders die efficiënt door grote codebases of logbestanden moeten zoeken.

Een ander krachtig hulpmiddel voor het recursief zoeken naar bestanden is fd, een eenvoudig, snel en gebruiksvriendelijk alternatief voor find. fd wordt geleverd met verstandige standaardinstellingen en biedt een intuïtieve syntaxis. Het commando bijvoorbeeld fd "pattern" zoekt recursief naar bestanden die overeenkomen met het patroon en ondersteunt standaard reguliere expressies. Aanvullend, fd is sneller dan find in veel scenario's vanwege de parallelle bestandssysteemtraversal. Voor gebruikers die geavanceerde zoekfuncties nodig hebben met een gebruiksvriendelijke interface, fd kan een uitstekende keuze zijn.

Laatste gedachten over recursief zoeken naar bestanden

Het beheersen van recursief zoeken naar bestanden in Linux is cruciaal voor efficiënt bestandsbeheer, vooral in complexe mapstructuren. Door gebruik te maken van tools zoals find, grep, en alternatieven zoals fdkunnen gebruikers hun productiviteit aanzienlijk verbeteren. Het begrijpen en gebruiken van deze opdrachten kan tijd besparen en taken vereenvoudigen voor zowel beginnende als ervaren gebruikers, waardoor het lokaliseren van bestanden een eenvoudig proces wordt.