find
is een opdracht voor het recursief filteren van objecten in het bestandssysteem gebaseerd op een eenvoudig voorwaardelijk mechanisme. Gebruik find
om naar een bestand of map op uw bestandssysteem te zoeken. Met de-exec
vlag kunnen bestanden gevonden en direct verwerkt worden binnen hetzelfde commando.,
Find Linux Files by Name or Extension
Use find
from the command line to locate a specific file by name or extension., Het volgende voorbeeld zoekt voor *.err
bestanden in de /home/username/
map en alle onderliggende mappen:
find /home/username/ -name "*.err"
ziet U een vergelijkbare output in de console:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Algemene Linux-Opdrachten en Syntaxis
De find
commando neemt meestal de volgende vorm:
find options starting/path expression
- De
options
attribuut bepaalt het gedrag en optimalisatie van de methode van defind
proces., - het
starting/path
attribuut definieert de top level directory waarfind
begint met filteren. - het
expression
attribuut controleert de tests die in de mappenhiërarchie Zoeken om uitvoer te produceren.
zoek een bestand in Linux met de bestandsnaam
om een bestand met de bestandsnaam te vinden, gebruik je de syntaxis find -name filename
. Het weglaten van het pad zoekt naar het bestand over de hele schijf., U kunt bijvoorbeeld een bestand met de naam example.err
vinden in uw /home/username
map met het volgende commando:
find -name example.err
u zou een vergelijkbare uitvoer moeten zien:
./username/example.err
zoek een bestand in uw huidige map met het find Commando
kijk eens naar de voorbeeldmap structuur en bestanden. In de voorbeelden van deze gids wordt hiernaar verwezen.,wilt vinden in het bestand example.err
in de directory of een van de submappen, kunt u het volgende commando:
find . -name example.err
de output lijkt op het volgende:
./example.err./directory_1/example.err
De uitvoer weerspiegelt directory_1
directory structuur:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
Vind Image Bestanden, in Linux Gebruik van de commandoregel
Verwijzen naar de structuur van het bestand in de vorige paragraaf, is er een beeld met de naam image01.png
die zich in de root (/
)s van de directory-structuur.,
om het bestand image01.png
te vinden, voer je het volgende find
commando uit dat alle .png
bestanden in de /
map lokaliseert.
find -name *.png
u zou een soortgelijke uitvoer moeten zien:
./image01.png
Wijzig het afbeeldingsbestandstype en zoek naar alle .jpg
bestanden binnen de rootdirectory (/
):
find -name *.jpg
de uitvoer lijkt op het voorbeeld., Refereer naar de voorbeeldmap structuur in de vorige sectie om de locatie van het bestand te bekijken.
./web_files/unnamed.jpg
zoek een leeg bestand in uw map met behulp van de opdrachtregel
om een leeg bestand in uw map te vinden met behulp van de opdrachtregel, voer het volgende commando uit:
find . -type f -empty
als er geen uitvoer wordt geretourneerd, dan is er geen leeg bestand in uw huidige map.
opties en optimalisaties voor het vinden van bestanden in Linux met behulp van de opdrachtregel
De Standaard configuratie voor find
ignoressymbolic links., Als u wilt dat find
symbolische koppelingen volgt en retourneert, voeg dan de optie -L
toe aan het commando, zoals hieronder getoond:
find -O3 -L /var/www/ -name "*.html"
Dit commando schakelt het maximale optimalisatieniveau in (-O3
) en staat find
om symbolische koppelingen te volgen (-L
). find
doorzoekt de gehele mapstructuur onder /var/www/
naar bestanden die eindigen met .html
.,
find
optimaliseert zijn filterstrategie om de prestaties te verhogen. Drie door de gebruiker te selecteren optimalisatieniveaus worden gespecificeerd als -O1
, -O2
, en -O3
. De-O1
optimalisatie is de standaard en dwingt find
om te filteren op basis van bestandsnaam voordat alle andere tests worden uitgevoerd.,
optimalisatie op het -O2
niveau geeft prioriteit aan bestandsnaamfilters, zoals in -O1
, en voert dan alle bestandstype filtering uit voordat u verder gaat met andere, meer resource-intensieve omstandigheden. Niveau -O3
optimalisatie staat find
toe om de meest ernstige optimalisatie uit te voeren en alle tests opnieuw te ordenen op basis van hun relatieve kosten en de waarschijnlijkheid van succes.,
Command | Description |
---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
sta find toe om de zoekopdracht automatisch opnieuw te ordenen op basis van efficiënt gebruik van hulpbronnen en waarschijnlijkheid. of success |
-maxdepth X |
Doorzoek de huidige map en alle submappen X levels deep. |
-iname |
zoeken zonder rekening te houden met tekstcases., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
bestanden in Linux Zoeken Door Modificatietijd met behulp van de opdrachtregel
de opdracht find
kan een maphiërarchie filteren op basis van wanneer een bestand voor het laatst is gewijzigd., Bijvoorbeeld, het volgende commando vindt elk bestand met de .err
extensie die in de laatste 7 dagen is gewijzigd:
find / -name "*err" -mtime -7
het voorbeeld commando geeft de volgende uitvoer:
gebruik Grep om bestanden in Linux te vinden met behulp van de opdrachtregel
de find
de opdracht kan alleen de mappenhiërarchie filteren op basis van de naam en de metagegevens van een bestand. Als je moet zoeken op basis van de inhoud van het bestand, gebruik dan een tool alsegrep., Neem het volgende voorbeeld:
find . -type f -exec grep "test" '{}' \; -print
Dit commando doorzoekt elk object in de huidige mappenhiërarchie (.
) dat een bestand is (-type f
) en voert dan het commando grep "test"
uit voor elk bestand dat aan de voorwaarden voldoet. De bestanden die overeenkomen worden afgedrukt op het scherm (-print
). De accolades ({}
) zijn een plaatshouder voor de zoekresultaten., De {}
zijn ingesloten in enkele aanhalingstekens ('
) om te voorkomen dat grep
een onjuiste bestandsnaam wordt doorgegeven. Het commando -exec
wordt beëindigd met een puntkomma (;
), die moet worden ontsnapt (\;
) om interpretatie door de shell te voorkomen.
het bestand dat in het voorbeeld wordt gebruikt (example.err
) bevat tekst die “test”zegt., Wanneer u het voorbeeld commando uitvoert, ziet u een vergelijkbare uitvoer:
Grep identificeerde elk bestand in de huidige werkmap dat de string “test”bevat.,
Opmerking
Voor de
find
commando ‘ s implementatie van de-exec
optie, je kan het genereren van een vergelijkbare output naar het bovenstaande voorbeeld met behulp van dexargs
commando:find . -type f -print | xargs grep "test"
Proces en het Vinden van Bestanden met Behulp van de Opdracht Zoeken in Linux
De -exec
optie opdrachten worden uitgevoerd tegen elk object dat overeenkomt met de find
expressie., Neem het volgende voorbeeld:
find . -name "example.err" -exec chmod o+r '{}' \;
Dit filtert elk object in de huidige hiërarchie (.
) voor bestanden met de naam rc.conf
en voert het commando chmod o+r
uit om de bestandsrechten van resultaten van de opdracht.
het voorbeeld commando voert de optie -exec
uit in de root directory van het find
proces. Gebruik -execdir
om het opgegeven commando uit te voeren in de map waar de Overeenkomst zich bevindt., Dit kan de veiligheidsproblemen verlichten en voor sommige operaties betere prestaties opleveren.
de opties -exec
of -execdir
draaien zonder verdere aanwijzingen. Als u liever wordt gevraagd voordat actie wordt ondernomen, vervang dan -exec
door -ok
of -execdir
door -okdir
.
hoe bestanden te vinden en te verwijderen met behulp van de Linux opdrachtregel
voorzichtigheid
Gebruik deze optie met uiterste voorzichtigheid.,
voeg de optie -delete
toe aan het einde van een overeenkomende expressie om alle overeenkomende bestanden te verwijderen. Gebruik deze optie als u er zeker van bent dat de resultaten Alleen overeenkomen met de bestanden die u wilt verwijderen.
in het voorbeeld hieronder vindt find
recursief alle bestanden in de hiërarchie vanaf de huidige map en verwijdert alle bestanden die eindigen met de .err
extensie:
find . -name "*.err" -delete
hebben nog steeds een paar vragen?,
Word lid van onze Community en plaats uw vragen voor andere Linode-en Linux-enthousiastelingen om u te helpen.
gerelateerde vragen: