Hostwinds Tutorials

Suchergebnisse für:


Inhaltsverzeichnis


Dateien auflisten
finden
Lokalisieren
ls
Gnom
Nach Namensuche suchen
finden
Lokalisieren
Gnom
Suche nach Größe
Du
finden
Lokalisieren
Gnom
Leere Dateien finden
finden
Lokalisieren
Gnom
Aktionen in Dateiübereinstimmungen durchführen
finden
Lokalisieren
Gnom
Suchanfragen mit dem GREP -Befehl raffinieren
Fazit

So finden Sie Dateien auf Ubuntu mit Terminal

Stichworte: Cloud Servers,  Dedicated Server 

Dateien auflisten
finden
Lokalisieren
ls
Gnom
Nach Namensuche suchen
finden
Lokalisieren
Gnom
Suche nach Größe
Du
finden
Lokalisieren
Gnom
Leere Dateien finden
finden
Lokalisieren
Gnom
Aktionen in Dateiübereinstimmungen durchführen
finden
Lokalisieren
Gnom
Suchanfragen mit dem GREP -Befehl raffinieren
Fazit

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.

Dateien auflisten

Um alle Dateien aus dem aktuellen Verzeichnis aufzulisten, können die folgenden Befehle verwendet werden:

finden

Die Unedelligten finden Der Befehl listet rekursiv alle Dateien aus dem aktuellen Verzeichnis auf:

find

Lokalisieren

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 *

ls

Verwenden der rekursiven -R Option ermöglicht den Standard ls Befehl zur Erzielung ähnlicher Ergebnisse:

ls -Rlha

Gnom

Mit der Gnome -Desktop -Umgebung können Sie analoge Ergebnisse erzielen:

Nach Namensuche suchen

In den folgenden Beispielen suchen wir nach allen Dateien mit dem .alt Verlängerung.

finden

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.

Lokalisieren

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).

Gnom

Ohne den Wildcard -Charakter (*) Die Anwendung von Gnome Desktop -Dateien bietet im Wesentlichen die gleichen Informationen wie die finden Befehl:

Suche nach Größe

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:

Du

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.

finden

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).

Lokalisieren

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.

Gnom

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.

Leere Dateien finden

Einige der oben genannten Befehle haben speziell Optionen zum Suchen leerer Dateien.Wir werden diese als nächstes untersuchen.

finden

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:

Lokalisieren

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.

Gnom

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.

Aktionen in Dateiübereinstimmungen durchführen

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.

finden

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:

Lokalisieren

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

Gnom

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:

  • sudo Erlaubt das finden Befehl zur Suche ohne Begegnung mit Erlaubnis verweigerte Fehler.
  • finden Ein Befehl, der nach Dateien sucht (ausführen Mann finden für Details).
  • / Startet die Suche aus dem Stammverzeichnis.
  • -Typ f Suche nach Dateien (und nicht nach Verzeichnissen).
  • -Iname "*Backup*" Bei der Ignorierung von Fall weist die Anweisungen die finden Befehl, um alle Dateien mit "Backup" irgendwo im Dateinamen zu finden.Beachten Sie die Verwendung der beiden (*) Wildcard -Charaktere.
  • -print0 Formatiert die Ausgabe der finden Befehl so, dass es von anderen Befehlen konsumiert werden kann, einschließlich Xarg.Im Speziellen, -print0 Ermöglicht Dateinamen, die Newlines oder andere Arten von Weißraum enthalten, durch Programme, die solche Eingaben verarbeiten können, korrekt interpretiert.Notiere dass der -print0 Option entspricht der -0 Option der Xargs Befehl.
  • Xargs Konvertiert seine Standardeingabe in Argumente für andere Befehle wie die Stat und CP Befehl.
  • -0 Bereitet die vor Xargs Befehl zum Empfangen von Eingaben, die möglicherweise einen weißen Raum, Zitatmarken oder Backslashs enthalten.
  • -ICH Die Kapital "I" -Option ermöglicht die Eingabe auf Xargs an mehr als einem Ort verwendet werden, wie über via {} Zeichen.
  • Sh -C Dies ruft einen separaten Befehlszeilen -Interpreter (Shell) auf und führt die an sie übergebenen Befehle aus.In diesem Fall, 'stat -c " %n %s bytes" {};cp {} ~/backups '.Diese zweite Hülle erlaubt es Xargs um mehrere Befehle mit dem auszuführen {} Zeichen.
  • STAT -C " %n %s Bytes" {} Zeigt den Namen an %n und Größe % s der Datei in der enthalten {} Token (in Bytes).
  • ; Mit dem Semikolon können zwei oder mehr Befehle in derselben Zeile ausgeführt werden.
  • CP {} ~/Backups Kopiert das gegeben {} Datei an der ~/Backups Verzeichnis.

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).

Suchanfragen mit dem GREP -Befehl raffinieren

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:

Fazit

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