Hostwinds Tutorials
Suchergebnisse für:
Inhaltsverzeichnis
Stichworte: Cloud Servers, Dedicated Server
In diesem Tutorial werden wir eine Reihe von Methoden zum Auffinden von Dateien und Verzeichnissen (d. H. Ordnern) in Ubuntu 20.04 LTs durchführen, z. B. alle Dateien mit a .alt Erweiterung oder Finden aller Dateien und Verzeichnisse größer als 2 GB.Wir werden auch übergehen, wie Sie einen oder mehrere Befehle in jeder gefundenen Datei ausführen.
Beachten Sie, dass einer der Befehl, den wir verwenden, ist Lokalisieren, was nicht nativ mit Ubuntu kommt.Das Lokalisieren Befehl ist oft schneller als finden Weil es eine Datenbank aller Dateien verwaltet, die alle 24 Stunden aktualisiert wird.Das Lokalisieren Der Befehl kann wie folgt installiert werden:
sudo apt install mlocate
Da alles in UNIX-ähnlichen Betriebssystemen, einschließlich Ubuntu, als Datei betrachtet wird, gibt der Begriff "Datei" auch "Verzeichnis" an, sofern nicht anders gerufen.Darüber hinaus basieren die Desktop -Umgebungsbeispiele auf Gnom.Um zu erfahren, wie Sie mit GNOME auf Ihren Remote -Ubuntu -Computer zugreifen können Verwenden Sie Windows Remote -Desktop mit Ubuntu 20.04 TLS.
Lassen Sie uns damit anfangen.
Um alle Dateien aus dem aktuellen Verzeichnis aufzulisten, können die folgenden Befehle verwendet werden:
Die Unedelligten finden Der Befehl listet rekursiv alle Dateien aus dem aktuellen Verzeichnis auf:
find
Das Lokalisieren Befehl ist ähnlich wie finden erfordert jedoch ein Muster (der Wildcard -Charakter in diesem Fall):
locate *
Die Geschwindigkeit von Lokalisieren kommt jedoch zu einem Preis.Kürzlich geänderte Dateien werden möglicherweise nicht in der Datenbank reflektiert.Um dieses Problem zu beheben, können Sie die Datenbank mit aktualisieren sudo aktualisiert (was einige Zeit dauern kann) oder das verwenden -e Option, die nur Dateien auflistet, die zum Zeitpunkt der vorhanden sind Lokalisieren Der Befehl wird ausgeführt (im Wesentlichen gleichwertig zu finden):
locate -e *
Verwenden der rekursiven -R Option ermöglicht den Standard ls Befehl zur Erzielung ähnlicher Ergebnisse:
ls -Rlha
Mit der Gnome -Desktop -Umgebung können Sie analoge Ergebnisse erzielen:
In den folgenden Beispielen suchen wir nach allen Dateien mit dem .alt Verlängerung.
Da wir nach allen Dateien suchen, verwenden wir die sudo Befehl, um Berechtigungsfehler zu vermeiden und die Suche aus dem Root -Verzeichnis zu starten (/):
sudo find / -iname *.old
Notiere dass der -Iname Option Ignorieren Sie den Fall, während -Name nicht.
Im Folgenden die -ich Option ignoriert den Fall:
sudo locate -i *.old
Interessanterweise sogar mit dem -e Option, die Lokalisieren Befehl findet das nicht /run/blkid/blkid/tab.old Datei (während finden tut).
Ohne den Wildcard -Charakter (*) Die Anwendung von Gnome Desktop -Dateien bietet im Wesentlichen die gleichen Informationen wie die finden Befehl:
Angenommen, wir möchten alle Dateien größer als 50 finden MiB.Für diese Aufgabe können wir das hinzufügen Du Befehl in unsere Liste der wahrscheinlichen Verdächtigen:
Das Du Der Befehl wurde speziell für diese Aufgabe entwickelt:
sudo du / -ha --threshold=50M
Das -h Die Option bietet Standard -Dateigrößen (menschliche) und die -a Die Option enthält sowohl Dateien als auch Verzeichnisse:
Um (die vier) Fehlermeldungen zu unterdrücken, können Sie die verwenden 2>&- Streit.Sie können auch nach Dateigröße sortieren:
sudo du / -ha --threshold=50M 2>&- | sort -h
Die letzte Zeile zeigt, dass die Festplatte insgesamt 2,8 Gib mit Daten enthält.
Im Folgenden finden Sie alle Dateien (ohne Verzeichnisse) größer als 50 MIB:
sudo find / -size +50M
Um die Größe jeder Datei in Bytes anzuzeigen, können Sie die verwenden -ls Option (und 2>&- So entfernen die Fehlermeldungen):
sudo find / -size +50M -ls 2>&-
Die 7. Spalte liefert die Größe jeder Datei in Bytes.Um nur den Dateipfad, Typ und Größe anzuzeigen, können Sie die verwenden -printf Option, wie gezeigt:
sudo find / -size +50M -printf "%p %y %s bytes\n" 2>&- | column -t
Das % p Gibt den Dateinamen zurück, %y der Dateityp, % s die Größe in Bytes und \n generiert ein Newline -Zeichen (für Details, ausführen Mann finden).
Das Spalte -t Der Befehl erstellt Spalten basierend auf Whitespace -Zeichen.Beachten Sie, dass 140737477885952 Bytes knapp 128 PIB beträgt, was eindeutig falsch ist.Eine genauere Wiedergabe folgt:
sudo find / -size +50M -printf "%p %y %k KiB\n" 2>&- | column -t
In obigem, %k Bietet die Dateigröße in KIB (im Gegensatz zu % s Bytes).
Weil die Lokalisieren Die Datenbank des Befehls enthält keine Dateiengrößesinformationen, Sie können Dateien nicht mehr als 50 MIB nur mit Listen auflisten Lokalisieren.
Die Desktop -Dateien von GNOME bietet typische Anwendung GUI Ergebnisse:
Wie oben zu sehen, ist die Sortierung nach der Größe der Größe nicht ganz hilfreich, wenn es darum geht, alle Dateien zu finden, die größer als 50 MIB sind.Das Du oder finden Befehle sind für eine solche Aufgabe besser geeignet.
Einige der oben genannten Befehle haben speziell Optionen zum Suchen leerer Dateien.Wir werden diese als nächstes untersuchen.
Für die finden Befehl, diese Aufgabe ist einfach:
sudo find /tmp -empty -type f,d
Dieser Befehl findet alle leeren Dateien und Verzeichnisse (d. H., -typ f, d) innerhalb der /tmp Ordner, wie gezeigt:
Aber welches ist welches?Wie oben können wir verwenden -printf und Säule folgendermaßen:
sudo find /tmp -empty -type f,d -printf "%p %y %s bytes\n" | column -t
Beachten Sie, dass für jedes leere Verzeichnis 4096 Bytes (4 KIB) im Ubuntu -Dateisystem vorhanden sind.Hier ist ein Beispiel für ein einzelnes leeres Verzeichnis und eine einzige leere Datei:
Wieder, weil die Lokalisieren Die Datenbank enthält keine Informationen zur Dateigröße. Es gibt keine Möglichkeit, leere Dateien/Verzeichnisse direkt mit nur dem zu finden Lokalisieren Befehl.
Die Anwendung Desktop-Dateien von GNOME liefert relativ nicht hilfreiche Ergebnisse:
Man müsste viel klicken, um alle leeren Dateien mithilfe der Gnome -Desktop -Umgebung zu identifizieren.
Nachdem wir nun wissen, wie wir Dateien finden, möchten wir möglicherweise Aktionen auf ihnen ausführen.wie das Löschen aller *.alt Dateien.
Das finden Befehl -exec Die Option führt den angegebenen Befehl einmal für jede übereinstimmende Datei aus.Zum Beispiel:
sudo find / -iname "*.old" -exec echo {} \;
Kurz gesagt, dies führt das aus Echo Befehl auf jedem .alt Datei gefunden. Hier die {} Syntax repräsentiert jede Matching -Datei.Also wenn vmlinux.old ist eine passende Datei, dann der Befehl echo vmlinux.old wird ausgeführt.Das Semikolon wird verwendet, um das Ende der Befehlszeichenfolge anzuzeigen, die dem folgt -exec Möglichkeit.Weil das Semikolon eine besondere Bedeutung hat, muss es mit den Backslash -Charakteren entkommen (Charaktere\), folgendermaßen:
Alle löschen *.alt Dateien aus dem /home/karlito Verzeichnis (oder ~ Verzeichnis) können Sie den folgenden Befehl ausführen:
sudo find . -iname "*.old" -exec rm -f {} \;
Wir können sehen, dass alle Dateien in der ~ Verzeichnis wurde entfernt:
Das Lokalisieren Befehl hat keine -exec Möglichkeit.Wir können diese Funktionalität jedoch mit dem emuliert Xargs Befehl:
sudo locate -i "*.old" | xargs -0 echo
Das -0 Option erlaubt Xargs Um atypische Dateiname -Zeichen richtig zu handhaben.
Alle entfernen *.alt Dateien aus dem /home/karlito Verzeichnis, Sie können ausführen:
sudo locate -i "/home/karlito/*.old" | xargs rm
Ebenso, um alle zu entfernen .alt Dateien, die in der aufgeführt sind Lokalisieren Datenbank des Befehls (im Allgemeinen alle *.alt Dateien auf der Festplatte) können Sie ausführen:
sudo locate -i "*.old" | xargs rm
Um dieselbe Aktion mithilfe der Dateienanwendung auszuführen, suchen Sie zuerst nach allen Dateien mit a.alt Verlängerung:
Wählen Sie als Nächstes alle übereinstimmenden Dateien aus, indem Sie Strg + A drücken. Drücken Löschen Taste:
Wir können die Löschung bei der Eingabeaufforderung wie folgt bestätigen:
Weil die Xargs Der Befehl ist schnell, flexibel und kann mit vielen anderen Befehlen verwendet werden. Es ist im Allgemeinen sinnvoll, ihn für die meisten Szenarien zu verwenden.Beispielsweise kopiert die folgenden Dateien, die "Backup" in ein Verzeichnis namens "Backups" im Home -Ordner des Benutzers enthalten, kopiert:
sudo find / -type f -iname "*backup*" -print0 | xargs -0 -I {} sh -c 'stat -c "%n %s bytes" {}; cp {} ~/backups'
Eine detaillierte Erklärung für jeden Befehl und die Option folgt:
Wenn Sie all dies zusammenfügen, ist dies zu einer Ausgabe, ähnlich wie folgt:
Im obigen sehen wir alle Dateien, die theoretisch kopiert wurden ~/Backups.Es ist theoretisch darin, dass nicht alle Dateien tatsächlich kopiert wurden:
Dies ist ein wichtiger Punkt - es gab keine Probleme in Bezug auf die Anzeige Stat Verwandte Informationen, aber es gab Probleme für die CP Befehl (der nicht gemeldet wird).
Als nächstes werden wir den Inhalt von übereinstimmenden Dateien durchsuchen, um ein oder mehrere Schlüsselwörter zu finden.Zu Beginn werden wir alle untersuchen *.Protokoll Dateien für das Vorkommen von Warnung.Dazu verwenden wir das allgegenwärtige Grep Befehl:
sudo find / -iname '*.log' -type f -print0 | xargs -0 grep warning
Ausführen der Befehle vor dem Rohr ( | ) Der Betreiber gibt die erwartete Liste von zurück *.Log Dateien.Ausführen der gesamten Befehlszeile Rückgabe pro Dateiberechtigung verweigert jedoch Fehler:
Das liegt daran, dass die Grep Der Befehl erfordert auch sudo Elevation.Somit erzeugt die folgende Befehlszeile die gewünschten Ergebnisse (beide -Iname und -ich Fall ignorieren):
sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo -i grep warning
Alle finden *.Protokoll Dateien enthalten Warnung, kritischund/oder Errorwir können die logische oder ( | ) Operator, der entkommen muss, damit er nicht mit dem Standardrohroperator verwechselt wird:
sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo grep -l -i 'warning\|critical\|error'
Die Kleinbuchstaben -Option "L" -l Zeigt die Liste der übereinstimmenden Dateien an und nicht den zugehörigen Inhalt:
Dieses Tutorial verglichen und kontrastierte mehrere Möglichkeiten, Dateien in Ubuntu 22.04 LTS zu finden.Es lieferte auch Techniken zum Ausführen von Befehlen in gefundenen Dateien.UNIX-ähnliche Betriebssysteme, einschließlich Ubuntu, bieten eine extrem reichhaltige Befehlszeilenumgebung, mit der Sie Ihren Ubuntu-Computer/Server verwalten können.
Geschrieben von Karlito Bonnevie / Juni 20, 2022