Hostwinds Tutorials
Zoekresultaten voor:
Inhoudsopgave
Trefwoorden: Cloud Servers, Dedicated Server
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.
Om alle bestanden uit de huidige map te vermelden, kunnen de volgende opdrachten worden gebruikt:
De onopgesmukte vind Commando recursief vermeld alle bestanden uit de huidige map:
find
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 *
Met behulp van de recursieve -R Optie maakt de standaard mogelijk ls commando om vergelijkbare resultaten te produceren:
ls -Rlha
U kunt analoge resultaten produceren met behulp van de GNOME -desktopomgeving:
In de volgende voorbeelden zoeken we naar alle bestanden met de .oud verlenging.
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.
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).
Zonder het wildcard -personage (*), de applicatie GNOME Desktop Files biedt in wezen dezelfde informatie als de vind opdracht:
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:
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.
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).
Omdat de bevind zich De database van de opdracht bevat geen informatie over bestandsgroot bevind zich.
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.
Een aantal hierboven genoemde opdrachten hebben opties specifiek voor het vinden van lege bestanden.We zullen deze volgende onderzoeken.
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:
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.
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.
Nu we weten hoe we bestanden kunnen vinden, willen we misschien acties op hen uitvoeren;zoals het verwijderen van alles *.oud bestanden.
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:
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
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:
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).
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:
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