Sortieren Sie die Dateien im Verzeichnis rekursiv nach dem Datum der letzten Änderung
Ich habe viele Dateien in meinem Verzeichnis geändert. Ich möchte wissen, was diese Dateien sind, indem ich sie nach dem Datum der letzten Änderung sortiere. Darin möchte ich, dass einige der Erweiterungen ausgeschlossen werden
im svn-verzeichnis habe ich auch viele .svn-dateien, die ich nicht in der sortierung anzeigen möchte
Antworten:
wird dir so etwas geben
quelle
find -not -iname '*.ext'
.Wenn Sie die Verzeichnisstruktur
find
reduzieren möchten (also nach Datum über alle Dateien in allen Verzeichnissen sortieren und ignorieren möchten, in welchem Verzeichnis sich die Dateien befinden), ist der von @yeti vorgeschlagene Ansatz der richtige Weg. Wenn Sie die Verzeichnisstruktur beibehalten möchten, können Sie es versuchenwelche sortiert Verzeichnis basierend.
quelle
Führen Sie in bash
shopt -s globstar
zuerst aus. Führen Sie in ksh93set -o globstar
zuerst aus. In zsh sind Sie bereits eingestellt.Dies gibt einen Fehler zurück, wenn Sie so viele Dateien haben, dass die Befehlszeilenlängenbeschränkung auf Ihrem System überschritten wird. In zsh können Sie stattdessen Folgendes verwenden:
quelle
Angenommen, Sie verwenden einen GNU-Fund, versuchen Sie Folgendes:
quelle
find
‚s-printf
Möglichkeit , einen separaten Prozess (oder mehr, je nach der Anzahl der Dateien) zu vermeiden aufgerufen wird . Siehe meine Antwort für ein Beispiel.stat
eine Chance und zeigt-exec ... +
. Ja wirklich! Manchmal denke ich,stat
verdient mehr Aufmerksamkeit ... und niemand sollte Rezepte von hier nehmen, ohne über die Zutaten zu lesen und über Konsequenzen nachzudenken ...-printf
...find
nicht haben-printf
, können Sie verwenden-exec sh -c 'printf...'
, um viel von der gleichen Funktionalität zu erhalten. Dies würde auch den Zugriff auf$(pwd)
vollständig qualifizierte Pfade einschließen .stat
. Also manchmal möchte ich nur etwas Aufmerksamkeit aufstat
... Ich denke, esstat
verdient ...So listen Sie die Dateinamen nur mit den neuesten GNU-Tools auf:
quelle
Dadurch werden Probleme mit der Argumentliste vermieden, da das einzige Argument,
ls
das jemals empfangen wird, der Name des Verzeichnisses ist, das aufgelistet werden soll. Sie können dies mit allem tun, was Sie möchten.Die Schale nur
. sources
die|pipe
als Shell - Skript - es ist der gleiche Prozess und nicht über die Probleme auftreten können , wennexecve
aufgerufen wird.In jedem Fall - das oben genannte geht nur drei-tief, was durch Ändern einstellbar ist
maxdepth
. Es ist auch tief zuerst - so arbeiten Sie sich rückwärts zu Ihrem aktuellen Verzeichnis vondepth
.Sie werden vielleicht bemerken, dass Sie auch
$LSCOLORS
- auf meinem Computer gibt es auch ordentlich gedruckte Spalten und alles andere, was Sie sich wünschen würdenls
- oder alles, was Sie sich vorstellen können, mit dem Sie etwas anfangen möchten. source.
KEINE SVN
Auch dies wird alles tun, was Sie erwarten
ls
. Das Ausblenden von.svn
Dateien ist also so einfach wie das Ändern derls
Zeile in:Oder wenn Sie
svn
Erweiterungen in jedem Ordner sehen möchten, ABER./svn
Sie können sie so ändern, dass der gesamte Befehl folgendermaßen aussieht:Persönlich mag ich es mit ls
-s
und, wenn Sie sich interessieren,-u
sortieren Sie nach Zugriffszeit und nicht nach Mod-Zeit.quelle
Dieser listet alles
files
auf,<dir>
wobei das oberste das älteste ist, das geändert wurdeUnd damit ist die neueste Modifikation die höchste
Beachten Sie, dass dies nur funktioniert, wenn die Liste der Dateinamen die maximale Länge der Befehlszeilenlänge auf Ihrem System nicht überschreitet.
quelle
xargs -0
(in beiden Fällen).xargs -print0
ist gleichbedeutend mitxargs -p -r -i -n -t -0
oderxargs -inprt0
oderxargs -0ntrip
, was wahrscheinlich nicht das ist, was Sie gemeint haben.