как открыть последний созданный текстовый файл?

Я знаю, как использовать cat быстро открыть файл, но одну из моих программ генерирует некоторые файлы журнала с супер длинными/странными именами и ввод -ls найти имя действительно не эффективно.

Как я могу открыть последний текстовый файл, просто созданный в папку?

Спасибо!

1
задан 29 June 2017 в 21:57

1 ответ

  1. Простой случай. Если Вы знаете, что Ваши имена файлов нормальны (никакие пробелы, globbing символы, новые строки и т.д.), можно просто сделать:

    cat $(ls -t | head -n1)
    
  2. Для контакта с пробелами и globbing символами просто заключите в кавычки:

    cat "$(ls -t | head -n1)"
    
  3. Если Ваши имена файлов произвольны, и необходимо сделать эту работу для любого имени файла, включая тех, которые имеют новые строки на их имя, используют:

    cat "$(stat --printf '%n/%Y\0' * | sort -rz -t'/' -k 2 | head -z -n 1 | cut -d'/' -z -f 1 )"
    

    Объяснение

    • stat --printf '%n/%Y\0' : распечатайте имя файла и его дату модификации (в секундах с эпохи), разделенный a / и затем NUL (\0). Я использую / и \0 потому что они - эти только два символа, не позволенные в файле/имени каталога.
    • sort -rz -t'/' -k 2 : вид на втором /- разделенное поле. -z делает sort считайте NUL-разграниченные данные.
    • head -z -n 1 : держите только кулак NUL-разграниченным (-z) строка.
    • cut -d'/' -z -f 1 : распечатайте только первое /- разграниченное поле, имя файла. Снова, -z делает cut соглашение с NUL-разграниченными данными.
  4. Использовать zsh вместо bash как Ваша оболочка, и просто выполненный:

    cat *(om[1])
    

Вы могли установить любой из них (предпочтительно 3, так как это является самым устойчивым) как псевдоним путем добавления этой строки к Вашему ~/.bashrc:

alias cat_last='cat "$(stat --printf "%n/%Y\0" * | sort -rz -t"/" -k 2 | head -z -n 1 | cut -d"/" -z -f 1 )" 2>/dev/null'

Я добавил /dev/null потому что в моей системе оболочка жалуется на байт NUL, находящийся во входе. Это не блокирует команду хотя и нет никакой причины продолжать видеть ошибку.

2
ответ дан 7 December 2019 в 13:32

Другие вопросы по тегам:

Похожие вопросы: