Hostwinds Tutorials

Zoekresultaten voor:


Inhoudsopgave


Lijstbestanden
vind
bevind zich
ls
Kabouter
Zoeken op naam
vind
bevind zich
Kabouter
Zoeken op maat
du
vind
bevind zich
Kabouter
Lege bestanden vinden
vind
bevind zich
Kabouter
Acties uitvoeren op bestandsbijeenkomsten
vind
bevind zich
Kabouter
Zoekopdrachten met de opdracht grep raffineren
Gevolgtrekking

Hoe u bestanden op Ubuntu met terminal kunt vinden

Trefwoorden: Cloud Servers,  Dedicated Server 

Lijstbestanden
vind
bevind zich
ls
Kabouter
Zoeken op naam
vind
bevind zich
Kabouter
Zoeken op maat
du
vind
bevind zich
Kabouter
Lege bestanden vinden
vind
bevind zich
Kabouter
Acties uitvoeren op bestandsbijeenkomsten
vind
bevind zich
Kabouter
Zoekopdrachten met de opdracht grep raffineren
Gevolgtrekking

In deze zelfstudie bespreken we een aantal methoden voor het vinden van bestanden en mappen (d.w.z. mappen) in Ubuntu 20.04 LTS, zoals het vinden van alle bestanden met een .oud Extensie of het vinden van alle bestanden en mappen groter dan 2 GB.We zullen ook bespreken hoe we een of meer opdrachten kunnen uitvoeren op elk gevonden bestand.

Merk op dat een van de opdrachten die we zullen gebruiken, is bevind zich, die niet native met Ubuntu komt.De bevind zich Commando is vaak sneller dan vind Omdat het een database van alle bestanden onderhoudt die om de 24 uur wordt bijgewerkt.De bevind zich Opdracht kan als volgt worden geïnstalleerd:

sudo apt install mlocate

Omdat alles in UNIX-achtige besturingssystemen, inclusief Ubuntu, wordt beschouwd als een bestand, zal de term "bestand" ook "directory" aangeven, tenzij anders opgeroepen.Bovendien zijn de voorbeelden van de desktopomgeving gebaseerd op Kabouter.Zie je om te leren hoe je toegang hebt tot uw externe Ubuntu -computer Windows Remote Desktop gebruiken met Ubuntu 20.04 TLS.

Laten we daarmee beginnen.

Lijstbestanden

Om alle bestanden uit de huidige map te vermelden, kunnen de volgende opdrachten worden gebruikt:

vind

De onopgesmukte vind Commando recursief vermeld alle bestanden uit de huidige map:

find

bevind zich

De bevind zich Commando is vergelijkbaar met vind maar vereist een patroon (in dit geval het wildcard -personage):

locate *


De snelheid van bevind zich komt echter voor een prijs.Recent gewijzigde bestanden worden mogelijk niet weerspiegeld in de database.Om dit probleem op te lossen, kunt u de database bijwerken met sudo bijgewerkt (die enige tijd kan duren) of de -e Optie die alleen bestanden op het moment van de bestanden van de bevind zich commando wordt uitgevoerd (in wezen equivalent aan vind):

locate -e *

ls

Met behulp van de recursieve -R Optie maakt de standaard mogelijk ls commando om vergelijkbare resultaten te produceren:

ls -Rlha

Kabouter

U kunt analoge resultaten produceren met behulp van de GNOME -desktopomgeving:

Zoeken op naam

In de volgende voorbeelden zoeken we naar alle bestanden met de .oud verlenging.

vind

Omdat we op zoek zijn naar alle bestanden, gebruiken we de sudo opdracht om toestemmingsfouten te voorkomen en de zoekopdracht te starten vanuit de hoofdmap (/):

sudo find / -iname *.old


Merk op dat de -ik noem Optie negeer de case terwijl -naam doet niet.

bevind zich

In het volgende, de -i Optie negeert case:

sudo locate -i *.old


Interessant is dat zelfs met de -e optie, de bevind zich opdracht vindt niet de /run/blkid/blkid/tab.old bestand (terwijl vind doet).

Kabouter

Zonder het wildcard -personage (*), de applicatie GNOME Desktop Files biedt in wezen dezelfde informatie als de vind opdracht:

Zoeken op maat

Laten we zeggen dat we alle bestanden groter dan 50 willen vinden Mib.Voor deze taak kunnen we de du Commando naar onze lijst met waarschijnlijke verdachten:

du

De du Commando is specifiek ontworpen voor deze taak:

sudo du / -ha --threshold=50M

De -h Optie biedt standaard (menselijke) bestandsgroottes en de -a Optie bevat zowel bestanden als mappen:


Om (de vier) foutmeldingen te onderdrukken, kunt u de 2>&- argument.U kunt ook sorteren op bestandsgrootte:

sudo du / -ha --threshold=50M 2>&- | sort -h


De laatste rij laat zien dat de schijf in totaal 2,8 Gib -gegevens bevat.

vind

De volgende vindt alle bestanden (exclusief mappen) groter dan 50 MIB:

sudo find / -size +50M


Om de grootte van elk bestand in bytes te bekijken, kunt u de -ls Optie (en 2>&- Om de foutmeldingen te verwijderen):

sudo find / -size +50M -ls 2>&-

De 7e kolom biedt de grootte van elk bestand, in bytes.Om alleen het bestandspad, het type en de grootte te bekijken, kunt u de -printf Optie, zoals getoond:

sudo find / -size +50M -printf "%p %y %s bytes\n" 2>&- | column -t


De % p Retourneert de bestandsnaam, %y het bestandstype, % s de grootte in bytes, en \n Genereert een nieuwe lijnpersonage (voor meer informatie, uitvoeren Man Find).

De kolom -t Command Creëert kolommen op basis van witruimte -tekens.Merk op dat 140737477885952 bytes net minder dan 128 PIB is, wat duidelijk onjuist is.Een meer accurate weergave volgt:

sudo find / -size +50M -printf "%p %y %k KiB\n" 2>&- | column -t


In bovenstaande, %k biedt de bestandsgrootte in KIB (in tegenstelling tot % s bytes).

bevind zich

Omdat de bevind zich De database van de opdracht bevat geen informatie over bestandsgroot bevind zich.

Kabouter

Gnome's Desktop Files -applicatie biedt typisch GUI Resultaten:

Zoals hierboven te zien is, is het sorteren op de grootte van de grootte niet volledig nuttig met betrekking tot het vinden van alle bestanden groter dan 50 MIB.De du of vind Opdrachten zijn meer geschikt voor een dergelijke taak.

Lege bestanden vinden

Een aantal hierboven genoemde opdrachten hebben opties specifiek voor het vinden van lege bestanden.We zullen deze volgende onderzoeken.

vind

Voor de vind Commando, deze taak is eenvoudig:

sudo find /tmp -empty -type f,d

Deze opdracht vindt alle lege bestanden en mappen (d.w.z. -type F, D) binnen de /TMP map, zoals getoond:


Maar wat is welke?Zoals hierboven kunnen we gebruiken -printf en kolom als volgt:

sudo find /tmp -empty -type f,d -printf "%p %y %s bytes\n" | column -t


Merk op dat elke lege map 4096 bytes (4 kib) vereist om te bestaan in het Ubuntu -bestandssysteem.Hier is een voorbeeld van een enkele lege map en een enkel leeg bestand:

bevind zich

Nogmaals, omdat de bevind zich Database bevat geen informatie over bestandsgrootte, er is geen manier om rechtstreeks lege bestanden/mappen te vinden met alleen de bevind zich opdracht.

Kabouter

Gnome's Desktop Files-applicatie biedt relatief niet-helpige resultaten:

Men zou veel moeten klikken om alle lege bestanden te identificeren met behulp van GNOME -desktopomgeving.

Acties uitvoeren op bestandsbijeenkomsten

Nu we weten hoe we bestanden kunnen vinden, willen we misschien acties op hen uitvoeren;zoals het verwijderen van alles *.oud bestanden.

vind

De vind commando's -Ep Optie wordt de opdracht verstrekt eenmaal uitgevoerd voor elk gematcht bestand.Bijvoorbeeld:

sudo find / -iname "*.old" -exec echo {} \;

Kortom, dit voert de echo commando op elk .oud bestand gevonden. Hier de {} Syntaxis vertegenwoordigt elk overeenkomende bestand.Dus als vmlinux.old is een bijpassend bestand, dan de opdracht echo vmlinux.old is geëxecuteerd.De puntkomma wordt gebruikt om het einde van de opdrachtreeks aan te geven na de -Ep keuze.Omdat de puntkomma een speciale betekenis heeft, moet deze worden ontsnapt met de backslash -tekens (\), als volgt:


Om alles te verwijderen *.oud Bestanden van de /Home/Karlito Directory (of ~ Directory), u kunt de volgende opdracht uitvoeren:

sudo find . -iname "*.old" -exec rm -f {} \;

We kunnen zien dat alle bestanden in de ~ Directory is verwijderd:

bevind zich

De bevind zich commando heeft geen -Ep keuze.We kunnen deze functionaliteit echter emuleren met behulp van de Xargs opdracht:

sudo locate -i "*.old" | xargs -0 echo


De -0 Optie mogelijk Xargs Om atypische bestandsnaam tekens correct af te handelen.

Om alles te verwijderen *.oud Bestanden van de /Home/Karlito Directory, je kunt uitvoeren:

sudo locate -i "/home/karlito/*.old" | xargs rm


Evenzo om alles te verwijderen .oud bestanden vermeld in de bevind zich de database van opdracht (meestal allemaal *.oud Bestanden op schijf), u kunt uitvoeren:

sudo locate -i "*.old" | xargs rm

Kabouter

Om dezelfde actie uit te voeren met behulp van de bestandentoepassing, zoek eerst naar alle bestanden met een.oud verlenging:

Selecteer vervolgens alle bijpassende bestanden door op Ctrl + A te drukken, druk vervolgens op de toets verwijderen en selecteer de Verwijderen knop:

We kunnen de verwijdering bij de opdrachtprompt als volgt bevestigen:


Omdat de Xargs Commando is snel, flexibel en kan worden gebruikt met veel andere opdrachten, het is over het algemeen logisch om het voor de meeste scenario's te gebruiken.De volgende kopieert bijvoorbeeld alle bestanden met "back -up" in een directory genaamd "back -ups" in de thuismap van de gebruiker:

sudo find / -type f -iname "*backup*" -print0 | xargs -0 -I {} sh -c 'stat -c "%n %s bytes" {}; cp {} ~/backups'

Een gedetailleerde uitleg van elke opdracht en optie volgt:

  • sudo Staat de vind Commando om te zoeken zonder toestemming af te ontkennen fouten.
  • vind Een opdracht die naar bestanden zoekt (uitvoer Man Find voor details).
  • / Start de zoekopdracht vanuit de hoofdmap.
  • -type f Zoekt naar bestanden (en geen mappen).
  • -iname "*back -up*" Terwijl u het geval negeert, instrueert u de vind Commando om alle bestanden te vinden met "back -up" ergens in de bestandsnaam.Let op het gebruik van de twee (*) jokertekens.
  • -print0 Formaat de uitvoer van de vind commando zodanig dat het kan worden geconsumeerd door andere opdrachten, inclusief Xarg.Vooral, -print0 Hiermee kunnen bestandsnamen die nieuwe lijnen of andere soorten witruimte bevatten, correct worden geïnterpreteerd door programma's die een dergelijke invoer kunnen verwerken.Merk op dat de -print0 Optie komt overeen met de -0 Optie van de Xargs opdracht.
  • Xargs Zet zijn standaardinvoer om in argumenten voor andere opdrachten, zoals de status en CP opdracht.
  • -0 Bereidt de Xargs Commando om invoer te ontvangen die mogelijk witte ruimte, offerteminages of backslashes bevat.
  • -L Met de optie "I" kan de input Xargs om op meer dan één plek te worden gebruikt, zoals via {} token.
  • Sh -c Dit roept een afzonderlijke opdrachtregel -tolk (shell) op en voert de aangelegde opdrachten uit.In dit geval, 'stat -c " %n %s bytes" {};cp {} ~/back -ups '.Deze tweede schaal staat het toe Xargs om meerdere opdrachten uit te voeren met behulp van de {} token.
  • stat -c " %n %s bytes" {} Geeft de naam weer %n en maat % s van het bestand opgenomen in de {} token (in bytes).
  • ; Met de puntkomma kunnen twee of meer opdrachten op dezelfde regel worden uitgevoerd.
  • cp {} ~/back -ups Kopieert het gegeven {} Bestand naar het ~/back -ups directory.

Dit alles samenstellen resulteert in de uitvoer vergelijkbaar met het volgende:

In het bovenstaande kunnen we alle bestanden zien die theoretisch zijn gekopieerd ~/back -ups.Het is theoretisch omdat niet alle bestanden daadwerkelijk zijn gekopieerd:

Dit is een belangrijk punt - er waren geen problemen met betrekking tot weergave status gerelateerde informatie, maar er waren problemen voor de CP commando (die niet worden gerapporteerd).

Zoekopdrachten met de opdracht grep raffineren

Vervolgens zullen we de inhoud van bijpassende bestanden zoeken om een of meer zoekwoorden te vinden.Om te beginnen zullen we alles onderzoeken *.log Bestanden voor het voorkomen van waarschuwing.Om dit te doen, gebruiken we het alomtegenwoordige grijp opdracht:

sudo find / -iname '*.log' -type f -print0 | xargs -0 grep warning

De opdrachten uitvoeren voorafgaand aan de pijp ( | ) Operator retourneert de verwachte lijst van *.logboek Bestanden.Het uitvoeren van de volledige opdrachtregel retourneert echter per bestandsmachtiging geweigerd fouten:


Dit komt omdat de grijp Commando ook vereist sudo verhoging.De volgende opdrachtregel produceert dus de gewenste resultaten (beide -ik noem en -i negeer zaak):

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo -i grep warning

Om alles te vinden *.log bestanden met waarschuwing, kritisch, en/of fout, we kunnen de logische of ( | ) Operator, die moet worden ontsnapt om niet te worden verward met de standaard pijpoperator:

sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo grep -l -i 'warning\|critical\|error'

De optie "L" in kleine letters -l geeft de lijst met overeenkomende bestanden weer en niet de bijbehorende inhoud:

Gevolgtrekking

Deze zelfstudie vergeleken en contrasteerde meerdere manieren om bestanden te vinden in Ubuntu 22.04 LTS.Het bood ook technieken voor het uitvoeren van opdrachten op gevonden bestanden.Unix-achtige besturingssystemen, waaronder Ubuntu, bieden een extreem rijke opdrachtregelomgeving om u te helpen uw Ubuntu-computer/server te beheren.

Geschreven door Karlito Bonnevie  /  juni- 20, 2022