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

Linux-Suchbefehl - Fortschritt anzeigen

Lösung 1:

mit diesem trick sieht man zwar den aktuellen ordner - aber keinen fortschrittsbalken - sorry.

 watch readlink -f /proc/$(pidof find)/cwd

Lösung 2:

Ein kleines Dienstprogramm namens pv (Pipe Viewer) darf Hilfe. Aus der fantastischen Zusammenfassung von Peteris Krumins:

Pipe Viewer ist ein Terminal-basiertes Tool zum Überwachen des Fortschritts von Daten durch eine Pipeline.

Sie können pv auf verschiedene Arten verwenden. Wenn ich hier herumspiele, setze ich es direkt nach einer Pipe, um den Fortschritt der von find generierten Ausgabe zu überwachen (sollte stdin unverändert an stdout übergeben)

find / -mtime -1h | pv > /dev/null

was die Ausgabe ungefähr so ​​zeigt:

6.42MB 0:01:25 [31.7kB/s] [         <=>      ]

(Ich habe stdout nach /dev/null umgeleitet, damit ich den Fortschrittsbalken in Aktion sehen kann, ohne dass die Ausgabe vorbeifliegt. Dies ist wahrscheinlich nicht Ihre Absicht mit find, also passen Sie es entsprechend an)

Ich bin mir ehrlich gesagt nicht sicher, wie gut das in freier Wildbahn funktioniert. Für "teure" Funde wie den obigen (Traversing from root) schien es ziemlich gut zu funktionieren. Bei einfacheren Befehlen in einem tieferen Knoten im Verzeichnisbaum scheiterte pv kläglich. Diese Befehle geben sofort Ergebnisse zurück, daher ist ein Fortschrittsbalken hier wahrscheinlich strittig.

Spielen Sie auf jeden Fall herum und sehen Sie, ob dies überhaupt für das funktioniert, was Sie brauchen. Zumindest ein Denkanstoß.

Lösung 3:

Ich habe heute danach gesucht und bin über Google hier gelandet. Ich hatte einen lang andauernden Fund, der unter OS X ausgeführt wurde, und anscheinend watch gibt es dort nicht. Also hier ist eine andere Lösung:

lsof -Fn -a -c find -d cwd +r 10

  • lsof =Liste der geöffneten Dateien
  • -Fn =nur den Namen der Datei/des Verzeichnisses anzeigen (mit vorangestelltem 'n'-Zeichen, überspringen Sie dies, wenn Sie den vollständigen lsof bevorzugen Ausgabe
  • -a =sage lsof um nur Zeilen anzuzeigen, die mit all übereinstimmen Kriterien (standardmäßig werden Zeilen angezeigt, die mit beliebigen übereinstimmen Kriterien)
  • -c find =Dateien/Verzeichnisse anzeigen, die vom Prozess namens find geöffnet wurden (eigentlich ein Prozess, dessen Name mit find beginnt , aber es wird zwischen Groß- und Kleinschreibung unterschieden, also Finder wird nicht angezeigt)
  • -d cwd =Zeilen mit FD (Dateideskriptor) cwd (aktuelles Arbeitsverzeichnis) anzeigen
  • +r 10 =Ausgabe alle 10 Sekunden anzeigen, bis keine offenen Dateien mehr gefunden werden (Find ist beendet)

Dadurch wird das Verzeichnis find angezeigt wird alle 10 Sekunden verarbeitet, also sollte es eine Vorstellung davon geben, ob find noch funktioniert und wie weit es fortgeschritten ist.

Lösung 4:

Es gibt ein Beispiel für parallele Suchen mit find in man find . Mit ihm können Sie mehrere Prüfungen für jedes Element durchführen und mehrere Aktionen ausführen, je nachdem, welche Bedingung funktioniert. Die erste Prüfung kann beispielsweise einfach sein-print , sodass alle Namen auf stdout ausgegeben werden. Die zweite Überprüfung wird das tun, was Sie wollen. Etwas wie:

find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)

Wenn die zweite Prüfung auch Dateinamen anzeigen soll, können Sie einen davon mit -fprint /dev/stderr auf stderr umleiten .

Lösung 5:

AFAIK, tut es nicht, und die Implementierung wäre nicht trivial.

... Hmm. Vielleicht ein Skript, das find <target dir> -type d ausführt Zuerst die Liste speichern und dann jedes Verzeichnis ausgeben, bevor ein find <list item> -maxdepth 1 <rest of find parameters> ausgeführt wird in einer for-Schleife.

Beachten Sie, dass Sie einen /signifikanten/ Leistungsverlust dafür eintauschen, dass Sie vage sehen können, was es tut.


Linux
  1. 25 einfache Beispiele für den Linux-Suchbefehl

  2. Linux-IP-Befehl

  3. Linux-cd-Befehl

  4. Finden Sie Befehlsbeispiele in Linux

  5. Was ist ein Befehl, um die Priorität des Prozesses in Linux zu finden?

Linux-Fingerbefehl zum Suchen von Benutzerdetails

Df-Befehl unter Linux

So finden Sie die IP-Adresse in der Linux-Befehlszeile

Finden Sie Befehl in Linux/UNIX

Der Linux-Befehl zum Suchen des Verzeichnisses:Erklärt

Linux top -c um den vollständigen Befehl anzuzeigen