GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden und listen Sie die Dateien rekursiv nach Datum in Linux auf

Der Hauptgrund, warum die meisten Benutzer von Betriebssystemen Linux anderen Betriebssystemen vorziehen, ist die Freiheit zu entdecken. Mit Linux sind Sie an einige lose gekoppelte Betriebssystemregeln gebunden. Das Betriebssystem definiert einige änderbare Standardregeln zur Verwendung in seiner Umgebung.

Sobald Sie den Mantel des Anfängers abgelegt haben, können Sie diese Standardregeln verlassen und Ihre eigenen erstellen. Unter Linux ist das Betriebssystem Ihr treuer Diener und Sie der Herr.

Dieser Fall ist in anderen Betriebssystem-Distributionen nicht realisierbar, da zu viele Abstraktionen vorhanden sind. Die Betriebssysteme sind hier eher Ihr Assistent. Sie können nie mehr Leistung haben als das Betriebssystem, wie im Fall von Linux. Während Sie Ihre Benutzererfahrung in einer Linux-Betriebssystemumgebung weiter ausbauen, wird Ihre Betriebssystem-Neugier täglich wachsen. Sie werden immer wissen wollen, was sich hier verbirgt und was Sie unter seinem Dach noch tun können.

Mit Dateien und Verzeichnissen unter Linux arbeiten

Ein perfektes Szenario ist Ihre tägliche Interaktion mit Dateien und Ordnern in der Linux-Betriebssystemumgebung. Die Verwendung des Dateisystems des Linux-Betriebssystems umfasst mehr als nur das Erstellen, Bearbeiten, Ändern und Löschen der Benutzerdateisysteme und -ordner. Jede Aktion, die mit den Benutzerdateien und Ordnern/Verzeichnissen in einer Linux-Umgebung verknüpft ist, hinterlässt einen Benutzer-Fußabdruck oder Fingerabdruck. Es ist, als würde man einen Raum betreten, um Gegenstände zu berühren und auszutauschen.

Wenn ein Linux-Vermieter oder Hausmeister diesen von Ihnen betretenen Raum verwaltet, weiß er genau, was Sie getan haben und welche Gegenstände Sie berührt oder ausgetauscht haben. Linux hat nützliche Befehle, die uns helfen, solche Ergebnisse zu erzielen. Sie wissen, was mit den Dateien und Ordnern in Ihrem Linux-Betriebssystem passiert ist, und können diese Aktionen anhand des Zeitpunkts identifizieren, an dem sie stattgefunden haben.

Kurz gesagt, beim Umgang mit Dateien und Verzeichnissen in einer Linux-Betriebssystemumgebung können wir eine Ereigniszeitleiste erstellen, um anfällige Dateiänderungen anhand von Zeitstempeln zu identifizieren, die jeder Änderung beigefügt sind. Als Vorteil wissen Sie durch die generierten Systemprotokolle, ob die Änderung mit schädlichen Inhalten in Verbindung gebracht wurde.

Die zu verwendenden Linux-Befehle

Wir werden einige einfache Befehle leiten, die uns helfen, die objektivierte Implikation dieses Artikelstücks zu verstehen. Sie müssen zuerst Ihr Terminal starten und einen Systempfad navigieren, von dem Sie wissen, dass er viele Dateien und Ordnerverzeichnisse enthält. Um sicherzugehen und nicht mit Ihren anfälligen Systemdateien herumzuspielen, können Sie Ihr „Dokumente“-Verzeichnis verwenden, das normalerweise im Linux-Betriebssystem vordefiniert ist. Der folgende Befehl sollte Sie zu diesem „Dokumente“-Verzeichnis bringen.

$ cd ~/Documents

Es ist ein beliebtes Verzeichnis mit vielen Dateien und Unterverzeichnissen. Ein weiteres Verzeichnis, das Sie für dieses Artikelexperiment verwenden können, ist das Verzeichnis „Downloads“. Es ist ein Ort, an dem Sie niemals heruntergeladene Dateien und andere Unterverzeichnisse verpassen werden.

$ cd ~/Downloads

Um dieses Experiment zu starten, benötigen wir eine zuordenbare Beispielausgabe von unserem Terminal. Wir werden eine Befehlszeichenfolge auf unserem Terminal eingeben, die es uns ermöglicht, aktive Dateien und ihre zugehörigen Unterverzeichnisse aufzulisten. Außerdem wird jedes Element der resultierenden Ausgabe dieses Befehls mit einem Zeitstempel verknüpft, der auf den letzten Änderungsversuch an der zugehörigen Datei, dem Verzeichnis oder Unterverzeichnis verweist.

Die zu verwendende Befehlszeichenfolge lautet wie folgt:

$ find . -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d' ' -f2-

Der folgende Screenshot ist die Ausgabe für die Verwendung der obigen Befehlszeichenfolge.

Aus analytischer Sicht stellt der untere Bildschirm der Befehlsausgabe die kürzlich geänderten Elemente in Ihrem übergeordneten Arbeitsverzeichnis dar. Die Ausgabeliste kann lang sein, abhängig von den Dateien und Ordnern, die Sie auf Ihrem Computer haben. Wenn Sie am Ausgabeterminal nach oben scrollen, werden ältere Dateien und Ordneränderungen angezeigt. Zusammenfassend haben wir eine Ausgabe, die die ältesten Änderungen an Dateien und Ordnern den neuesten Änderungen zuordnet.

Wie Sie bemerkt haben, hat die obige Befehlszeichenfolge, die Sie in Ihr Terminal eingefügt haben, drei wichtige Befehlsargumente. Wir müssen verstehen, was jeder von ihnen tut.

Suchen

Der Befehl „find“ ist der erste, der aus der Befehlszeichenfolge ausgeführt wird. Es hat das einzige Ziel, die aktiven Dateien und Verzeichnisse in Ihrem übergeordneten Arbeitsverzeichnis rekursiv aufzulisten. Das "." Das Argument, das auf das „find“-Argument folgt, zeigt diesen Befehl auf das aktuelle Arbeitsverzeichnis. Wenn Sie sich nicht sicher sind, in welchem ​​Verzeichnis Sie sich befinden; Sie können den Befehl „pwd“ auf Ihrem Terminal eingeben. Es gibt den Pfad zu dem Verzeichnis aus, in dem Sie sich gerade befinden.

Das "." Argument wird als Ausgabe des Befehls „pwd“ übersetzt. Es erleichtert das Auffinden der Dateien und Verzeichnisse Ihres aktuellen Arbeitsverzeichnisses. Das nächste Argument in der Befehlszeichenfolge ist „-printf“. Es ist ein Flag für ein Druckargument. Es druckt die Dateien und Verzeichnisse in Ihrem aktuellen Arbeitsverzeichnis in einem bestimmten Format. Das verwendete Format wird durch das Argument „%T@%t%p\n“ angegeben. Es ist das Befehlsargument, das unmittelbar darauf folgt.

Der Teil „%T@“ dieses Arguments repräsentiert die Epochenzeit. Per Definition ist Epochenzeit oder Unix-Epoche der Zeitstempel am 1. Januar 1970. Er wird als 00:00:00 UTC dargestellt. Die Ausgabe auf Ihrem Terminal nimmt dieses Format an, um die Änderungsdaten darzustellen, die den aufgelisteten Dateien und Verzeichnissen zugeordnet sind. Der „%t“-Teil des Arguments verwendet jetzt das Epochenzeitformat, um den Zeitstempel der letzten Änderung anzuzeigen, der den aufgelisteten Dateien und Verzeichnissen zugeordnet ist.

Abhängig von Ihrer Linux-Distribution oder -Variante zeigt die Terminalausgabe möglicherweise nicht die Epochenzeit an, die der Ausgabeliste der geänderten Dateien zugeordnet ist. Diese Aussage ist ein Beweis für die Ausgabe von meiner Seite.

Der Teil „%p“ des Arguments gibt die Namen der angezeigten Dateien in diesem aktuellen Arbeitsverzeichnis aus. Schließlich dient der Teil „/n“ des Arguments als Zeilenumbruchzeichen. Nach jeder aufeinanderfolgenden Auflistung einer geänderten Datei übernimmt dieses Zeilenumbruchzeichen den Anzeigecursor und springt die nächste Dateianzeige in eine neue Zeile auf dem Terminalbildschirm. Es erleichtert uns, jede angezeigte Datei anders zuzuordnen.

Ein weiterer Ansatz für die Arbeit mit der oben genannten Befehlszeichenfolge besteht darin, den Teil „%t“ des Arguments „%T@%t%p\n“ durch „%c“ zu ersetzen. Die resultierende Befehlszeichenfolge sollte etwa wie folgt aussehen:

$ find . -printf '%T@ %c %p\n' | sort -k 1 -n | cut -d' ' -f2-

Die Ausgabe der Ausführung dieser Befehlszeichenfolge sollte eine Ausgabe ähnlich dem folgenden Screenshot erzeugen.

Die Beobachtung des obigen Screenshots zeigt deutlich die folgende Beobachtung. Die Ausgabeliste der Dateien im aktuellen Arbeitsverzeichnis wird mit einer „Zeit der letzten Statusänderung“ anstelle der „Änderungszeit“ angezeigt. Dies ist der Effekt des Ersetzens von „%c“ durch „%t“ in „%T@%t%p\n“. Dieser letzte Befehl gibt Berechtigungsänderungen aus, die der ausgegebenen Dateiliste zugeordnet sind. Der Inhalt der Dateien ändert sich möglicherweise nicht, aber die damit verknüpften Metadaten ändern sich.

Zu diesem Zeitpunkt folgen die Ausgabeergebnisse keiner chronologischen Reihenfolge, da wir uns noch mit dem Sortierbefehl befassen müssen. Zuerst wird der Änderungszeitstempel gedruckt, gefolgt vom Namen der zugehörigen Datei.

Sortieren

Dieses Befehlsargument hat drei Parameter, nämlich „-k“, „1“ und „n“. Der Sortierbefehl ist für die Reihenfolge verantwortlich, in der die Ausgabe der Dateiliste auf unseren Bildschirmen erscheint. In diesem Fall wird zuerst das Änderungsdatum gedruckt, gefolgt vom Dateipfad zu der geänderten Datei oder dem geänderten Verzeichnis. Der Teil „-k“ dieses Befehlsarguments gibt die Startposition an, um mit dem Sortierprozess zu beginnen.

Der „-k“-Teil des Arguments des Sortierbefehls enthält eine Frage, die durch den „1“-Teil desselben Arguments beantwortet wird. In diesem Fall beginnt der Sortiervorgang ab der ersten Spalte, wie durch „1“ angegeben. Das sort-Befehlsargument ist auch dafür verantwortlich, dass die neueste geänderte Datei am Ende der Liste steht und die älteste oben. Der '-n'-Teil des Arguments ist für die numerische Zeit mit Dezimalstellengenauigkeit verantwortlich.

Wenn Sie „-nr“ anstelle von „-n“ verwenden, werden in der Ausgabe der Befehlszeichenfolge die neu geänderten Dateien und Verzeichnisse oben auf der Terminalausgabe und alte Dateiänderungen unten angezeigt. Es kehrt die Sortierreihenfolge der Terminalausgabe um.

Schnitt

Der Hauptzweck des Befehlsarguments „cut“ besteht darin, die Ausgabe unseres Terminalausdrucks ordentlich zu organisieren. Die Optionen „-d“ und „ “ dieses Befehlsarguments werden kombiniert, um Leerzeichen zu generieren und dann den Ausdruck der Dateiinhaltsdetails abzuschneiden, der versuchen könnte, diesen Leerzeichen zu folgen.

Mit dieser einfachen Befehlszeichenfolge können Sie die Dateien in Ihrem aktuellen Arbeitsverzeichnis rekursiv drucken, wobei jede Ausgabe die besagten Dateien mit ihrem Änderungsdatum verknüpft.

Alternative Befehlsoptionen

Sie könnten argumentieren, dass der Befehl „ls -lrt“ alle Dateien innerhalb eines Active Directory-Pfads auf Ihrem Linux-Betriebssystem perfekt auflistet, von den ältesten zu ändernden bis zu den neuesten. Andererseits berücksichtigt dieser Befehl nicht die in Unterordnern vorhandenen Dateiinhalte. Wenn das Auflisten von Unterverzeichnissen nicht Ihr Ziel ist, können Sie das Argument „-type f“ zur Befehlszeichenfolge hinzufügen. Betrachten Sie die folgende Modifikation des Befehls.

$ find . -type f -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Die Verwendung des Befehlsarguments „-type d“ hat eine gegenteilige Wirkung zum obigen Befehl. Ihr Terminal gibt nur geänderte Verzeichnisse vom ältesten zum neuesten aus. Betrachten Sie die Auswirkungen wie folgt:

$ find . -type d -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Schlussbemerkung

Sie sind jetzt mit der exemplarischen Vorgehensweise zum rekursiven Drucken von Dateien und Verzeichnissen in Ihrem aktuellen Arbeitsverzeichnis vertraut, mit dem zusätzlichen Wissen, wann sie zuletzt geändert wurden, basierend auf ihren zugehörigen Zeitstempeln.

Anhand dieses Wissens können Sie eine Zeitachse der Ereignisse zusammenstellen, die die Reihenfolge der Änderungen von Dateien und Verzeichnissen zusammen mit dem Pfad zu ihrem Speicherort chronologisch aufzeigt.


Linux
  1. So finden und sortieren Sie Dateien basierend auf Änderungsdatum und -zeit in Linux

  2. So suchen und entfernen Sie Verzeichnisse rekursiv unter Linux

  3. Finden Sie die größten Dateien und Verzeichnisse in Linux

  4. Linux – Dateien für das aktuelle Datum in Linux abrufen?

  5. Wie man alle Dateien und Verzeichnisse rekursiv auflistet

So finden und löschen Sie doppelte Dateien in Linux

So finden Sie Dateien mit dem fd-Befehl in Linux

So finden Sie doppelte Dateien in Linux und entfernen sie

Wie man Dateien in Linux rekursiv auflistet

So finden Sie das Installationsdatum und die Uhrzeit des Linux-Betriebssystems

So finden Sie die Liste der installierten Repositories in Linux