Ich versuche, die Datei des aktuellen Datums mit dem folgenden Befehl in HP-UX Unix zu erhalten:
$ ls -lrt ABC.LOG* |grep "`date +"%b %d"`"
Aber es gibt mir den Fehler:
ksh: : cannot execute
grep: can't open %d
Irgendwelche Vorschläge?
Akzeptierte Antwort:
Der Fehler rührt vom Zitieren der Argumente von grep
her und die Tatsache, dass Backticks nicht sehr gut verschachteln:
grep "`date +"%b %d"`"
Dies wird besser als
geschriebengrep "`date +'%b %d'`"
… oder noch besser,
grep "$(date +'%b %d')"
Genauer gesagt mit $(...)
Anstelle von Backticks sollten Sie die inneren doppelten Anführungszeichen beibehalten können:
grep "$(date +"%b %d")"
Eine Alternative zum gruppieren der Ausgabe von ls
zu tun wäre
find . -type f -name "ABC.LOG*" -ctime -1
Dies würde alle regulären Dateien finden (-type f
) im aktuellen Verzeichnis, deren Namen mit dem angegebenen Muster übereinstimmen und deren ctime weniger als 24 Stunden seit der aktuellen Zeit liegt . Die ctime einer Datei ist die Zeit, zu der die letzte Änderung der Daten oder Metadaten der Datei vorgenommen wurde.
Dies entspricht jedoch nicht genau dem, was Sie erreichen möchten. Dies wiederholt sich auch in Unterverzeichnissen.