
file1
Ich habe eine ausführbare Datei, die entweder oder zusammen mit anderen Dateien erstellt file2
. Ich versuche, ein Shell-Skript zu schreiben, das die zuletzt erstellte Datei ausgeben soll. Wenn die ausführbare Datei erstellt file1
, sollte die Ausgabe sein file1
. Bitte beachten Sie, dass ich bereits sowohl file1
als auch file2
zusammen mit anderen Dateien im Verzeichnis habe. Die ausführbare Datei überschreibt es. Wenn keine Datei1/Datei2 vorhanden sind, funktioniert das folgende Skript, aber dies funktioniert nicht, wenn sowohl als file1
auch file2
vorhanden sind.
if [ -e "file1" ]; then
output="file1"
else
output="file2"
fi
Antwort1
Der schnelle und einfache Weg.
output="$(ls -td control.tk input.scs 2> /dev/null|head -1)"
Ich würde dies jedoch nur verwenden, wenn Sie sicherstellen können, dass die Dateien keine komischen Zeichen wie Zeilenumbrüche oder Leerzeichen enthalten. Wenn Sie garantieren können, dass die Dateinamen keine komischen Zeichen enthalten, ls
ist das Parsen ziemlich sicher.