Liste der Dateien, die zwischen bestimmten Zeiträumen geändert wurden

7

Ich versuche, eine Liste der Dateien zu erhalten, die zwischen einem bestimmten Zeitraum geändert wurden, wie in dieser Antwort erläutert .

Ich habe Datum und Uhrzeit in zwei Variablen [nn und nn1 (dumme Benennung)] gespeichert und mit findBefehl versucht . Ich habe folgenden Fehler bekommen -

vikram@vikram-Studio-XPS-1645:~$ echo $nn1
10-04-12 23:26:48
vikram@vikram-Studio-XPS-1645:~$ echo $nn
10-05-12 00:26:48
vikram@vikram-Studio-XPS-1645:~$ find . -newermt $nn -and -not -newermt $nn1 -print
find: paths must precede expression: 00:26:48
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
vikram@vikram-Studio-XPS-1645:~$

Warum tritt dieser Fehler auf?

Vikram
quelle

Antworten:

12

Ihre Syntax ist leicht falsch. Lassen Sie uns dies mit aussagekräftigen Variablennamen wiederholen. Wir werden besser verstehen, was passiert, wenn wir weitermachen.


export newerthan="2012-10-04 00:05:00"
export olderthan="2012-10-05 16:30:00"
find . -newermt "$newerthan" ! -newermt "$olderthan"

Dies findet zuerst Dateien und Verzeichnisse, die nach dem 4. Oktober 2012 um 00:05 Uhr geändert wurden. Dann wird es entfernen Ergebnisse , die nach dem 5. Oktober geändert wurden 2012, um 4:30 Uhr.


./Verwenden Sie diesen Befehl, um Ergebnisse ohne Vorzeichen in jeder Zeile zu erhalten:

find . -newermt "$newerthan" ! -newermt "$olderthan" | sed 's/^.\///g'
SirCharlo
quelle
Warum müssen Sie Ihre Variablen exportieren, wenn Sie sie nur durch einen Befehl ersetzen möchten?
Ruslan