"find-ls" mit der richtigen Zeit-Stil
verwende ich den folgenden Befehl zum generieren einer filelist, die ich Vergleiche manchmal zu sehen, wenn etwas geändert wird:
find /directory -xdev -ls
Mein Problem ist, dass die Zeit in der Ausgabe ist nicht immer im gleichen format:
Sep 19 08:48 ./pool/f/f/0/ff046cc5b7188073cbd68207c52bddc5
Nov 2 06:24 ./pool/f/f/0/ff0e803c36d89315a6b3663ed1295f71
Jan 18 2012 ./pool/f/f/0/ff07f60465d8deb7a1aa38096d0b798d
Jan 18 2012 ./pool/f/f/0/ff07436f519bddf1d340afde5a240375
Für den ls-Befehl gibt es die option --time-format=long-iso zu zwingen, die gleichen Zeit-format für alle Dateien.
Ist es möglich combinate das mit der find-Befehl?
Dank
InformationsquelleAutor Denno | 2014-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nichts in meiner manpage zum ändern des formats der
-ls
parameter. In der Tat, auf meinem system, die Ausgabe von-ls
ist nicht beeinflusst durch verschiedene Umgebungsvariablen wirken sich auf die Ausgabe derls
Befehl selbst. Ich gehe davon aus, dass das format des-ls
parameter internefind
und nicht um die tatsächlichels
Befehl. Für mich macht die Programmierung Sinn. Warum ein externes Kommando zu starten? Nur simulieren die Anzeige.Nur so kann ich mir vorstellen, dies zu umgehen, ist die Verwendung
-exec
oder-print0
übergeben der Ergebnisse an die tatsächlichenls
Befehl. Ein bisschen Warnung: Wenn Sie den Namen des Verzeichnisses,ls
drucken wird der Inhalt dieses Verzeichnisses, so dass Sie brauchen, um passieren-d
zu denls
Befehl, oder fügen Sie-type f
in Ihrefind
Abfrage. Ich habe in der manpage zu finden auf Linux, und festgestellt, dass es wohl die gleiche Ausgabe wie -dils, so I used that. Since
-dis included, I didn't have to add
Typ -f " zu meiner Suche-Abfrage:Diese ist mit der
-exec
die schicken jeden und jede Datei und jedes Verzeichnis individuell auf diels
Befehl. Wenn Sie über 10.000 Dateien,ls
wird 10.000 mal aufgerufen.Diese vielleicht effizienter:
Diese Gruppe wird so viele Dateinamen wie möglich, die passen in den Puffer aus und geben Sie auf einmal zu den
ls
Befehl. Es rufen diels
Befehl so oft wie nötig, um komplett alle Dateien. Zum Beispiel, wenn Sie 10.000 Dateien in Ihremfind
Befehl, diels
Befehl aufgerufen wird vielleicht einmal oder zweimal, anstatt 10.000 mal.Das problem ist, dass
xargs
hat Probleme mit lustige Datei-Namen, und es gibt einige Sicherheits-Probleme, so wies in der manpage:Den
-print0
parameter verwendetNUL
Charakter zu trennen Dateinamen statt einerNL
und die-0
parameter teiltxargs
zu verwenden, dieNUL
Zeichen als Dateiname Trennzeichen anstatt Leerzeichen (die Zeichen in der$IFS
environment-variable).Bedeutet dies den Einsatz
-print0 | xags -0
funktioniert fast die ganze Zeit, aber man kann immer noch entscheiden, dass-exec ls
einen besseren Weg zu gehen.InformationsquelleAutor David W.
Können Sie verschiedene Optionen an -printf (Mann finden)
-printf
auf GNU-version vonfind
. Es gibt keine-printf
parameter, die auf anderen Unix-Systemen, es ist also nicht universal. Auf meinem Mac-printf
existiert nicht. Allerdings, wenn die OP ist mit--time-style
imls
er hat die GNU tools, und-printf
funktionieren sollte.FWIW -printf kann nicht simulieren, die x -> y-notation, die ls nutzt für symbolische Links.
Hinweis:
%C
gibt Ihnen diectime
, die nicht mit dem datetime, dass Sie aus derls -l
, diemtime
. Wenn Sie möchten, um die gleichenmtime
entsprichtls -l
verwenden%T
statt%C
.InformationsquelleAutor Ken