2017-10-03 2 views
0

versucht, alle Dateien im aktuellen Verzeichnis drucken mitBereinigen alle Unterverzeichnisse im aktuellen Verzeichnis

find . -newer myfile -mtime +3 ! -name . -prune 

aber auch die Dateien in den Unterverzeichnissen Druck wird versucht Zusammenhang Beitrag zu lesen hier:

How to use '-prune' option of 'find' in sh?

aber nicht verstanden, aber versucht

find . -newer myfile -mtime +3 ! -name . -prune -o -print 

dies brachte auch nicht, was ich wollte auch versucht

find . -type f -newer myfile -mtime +3 ! -name . -prune 

aber das ist alles .snapshots Unterverzeichnisse in der Ausgabe rekursiv zu bringen. Bitte sagen Sie mir, wie kann ich alle Unterverzeichnisse in der Ausgabe mit Prune vermeiden.

OUTPUT

find . -newer myfile -mtime +3 ! -name . -prune 

./.snapshot/hourly.7/file_status_out.txt 
./.snapshot/hourly.1/file_status_out.txt 
./.snapshot/hourly.6/file_status_out.txt 
./.snapshot/hourly.5/file_status_out.txt 
./.snapshot/nightly.0/file_status_out.txt 
./.snapshot/hourly.0/file_status_out.txt 
./.snapshot/hourly.4/file_status_out.txt 
./.snapshot/hourly.2/file_status_out.txt 
./.snapshot/hourly.3/file_status_out.txt 
./.snapshot/nightly.2/file_status_out.txt 
./.snapshot/nightly.1/file_status_out.txt 
./.snapshot/veritas.nfs01p_vol1/file_status_out.txt 
./.snapshot/weekly.0/file_status_out.txt 
./.snapshot/lonnf30060(1874649454)_nfs01p_vol1.58917/file_status_out.txt 
./.snapshot/lonnf30060(1874649454)_nfs01p_vol1.58916/file_status_out.txt 
./.snapshot/dfpm_base(dataset-id-225039)conn1.0/file_status_out.txt 
./file_status_out.txt 
+1

filtern Ich verstehe dich nicht. Was versuchst du zu erreichen? Wenn Sie Dateien in Unterverzeichnissen nicht finden wollen, fügen Sie einfach das Flag "-maxdepth 1" hinzu. –

+0

Ich habe bearbeitet, so dass es mehr Sinn macht, mit meinem eigentlichen Zweck – Vicky

+0

Bitte führen Sie einige Beispieldateien (Name und relativen Pfad) und ob Sie wollen, dass sie gefunden werden oder nicht und warum. – Yunnosch

Antwort

0

Es ist auf der letzten Änderung von „myfile“ hängt implizit finden, dass ein -and oder -a mit den Ausdrücken, so sind die Wege zu beschneiden (Verzeichnisdateien) neuer als myfile -newer myfile und -mtime +3 mit der letzten Änderungszeit größer als 3 Tage, dies ist möglicherweise nicht möglich, wenn myfile jünger als 3 Tage ist.

Eine andere Lösung Verzeichnisse zu beschneiden, wenn -maxdepth nicht

unterstützt wird
find . ! -name . -type d -prune -o -print 

spezifischen Bedingung hinzugefügt werden kann, nachdem -o

find . ! -name . -type d -prune -o -newer myfile -print 

Update folgenden Kommentare, es Bedingungen scheint nicht an der richtigen Stelle hinzugefügt:

find . ! -name . -type d -prune -o -newer myfile -mtime +1 -print 

Bedingungen vor -prune sind Unterverzeichnisse filtern (geben Sie d außer. andernfalls würde nichts zurückgeben), Bedingungen nach -o sind Dateien zu -print oder zu -ls abhängig das letzte Argument

+0

details von myfile ist' -rw ------- 1 xxxx xxxx 0 Sep 29 00:00 myfile-Befehl, den du gegeben hast. ! -Name .-type d -prune -o -newer myfile -print bringt auch Dateien mit, die nicht älter als 3 Tage sind, da sie heute und gestern modifizierte Dateien drucken. Ich habe auch nicht verstanden, warum Sie '-o' für ODER verwendet haben, ich möchte eine Datei drucken, die' -und' erfüllt. Die Dinge werden am schlimmsten, wenn ich 'finde. ! -Name . -type d -prune -o -newer myfile -print | xargs ls -l 'wie das scheint alles zu listet – Vicky

+0

' -o' ist nach '-prune' erforderlich, um false für nichtbereinigte Dateien zu umgehen –

+0

Ihre Kommentare bestätigen meine Antwort' -mtime + 3' und '-newer myfile' können Es ist nicht wahr, weil der 29. September genau 3 Tage vorher war –

Verwandte Themen