GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zitate in Backticks in Anführungszeichen in Ksh?

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

geschrieben
grep "`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.


Linux
  1. Warum verwenden Unix-Manpages doppelte Backticks anstelle von doppelten Anführungszeichen?

  2. Grep -v Unerwartetes Verhalten?

  3. Überprüfen, ob ein Skript ausgeführt wird?

  4. Befehlsersetzung mit „?

  5. Cut / Grep und Df -h?

Grep Regex:Ein vollständiger Leitfaden

So schließen Sie in Grep aus

Reguläre Ausdrücke in Grep (Regex)

Installation von Seafile 6.3.2 in ISPConfig 3.1

Grep-Befehl unter Linux/UNIX

Wie grep \n in Datei