
У меня есть исполняемый файл, который создает либо , file1
либо file2
вместе с другими файлами. Я пытаюсь написать скрипт оболочки, который должен выводить последний созданный файл. Если исполняемый файл создает file1
, вывод должен быть file1
. Обратите внимание, что у меня уже есть оба file1
и file2
существует в каталоге вместе с другими файлами. Исполняемый файл перезаписывает его. Если не существует file1/file2, следующий скрипт работает, но это не работает, если существуют оба file1
и .file2
if [ -e "file1" ]; then
output="file1"
else
output="file2"
fi
решение1
Быстрый и простой способ.
output="$(ls -td control.tk input.scs 2> /dev/null|head -1)"
Однако я бы использовал это только если вы можете быть уверены, что файлы не содержат забавных символов, таких как переводы строк или пробелы. Если вы можете гарантировать, что имена файлов не содержат забавных символов, то парсинг ls
вполне безопасен.