awk :найти самые старые и самые новые файлы по дате

Самостоятельный ответ -ОП не работал у меня на Xubuntu 18.04. Например. в меню Whisker панели xfce4 -у меня все еще были пунктирные линии.

Вместо этого у меня сработал ответ от AskUbuntu . Но я не редактировал файл системной темы (, для этого потребуется root-доступ ), вместо этого создав ~/.config/gtk-3.0/gtk.css, чтобы он содержал следующее:

scrolledwindow undershoot.top,
scrolledwindow undershoot.right,
scrolledwindow undershoot.bottom,
scrolledwindow undershoot.left { background-image: none; }

Теперь ни в Whisker Menu, ни в Mousepad нет пунктирных линий.

0
12.10.2020, 02:07
2 ответа

Использование statдля получения файлов и времени их модификации, awkдля получения минимума/максимума без сортировки и форматирования вывода.

stat -c "%Y %n" * | awk '
    min == "" || min > $1 {min = $1; fmin = substr($0, index($0, FS)+1)}
    max == "" || max < $1 {max = $1; fmax = substr($0, index($0, FS)+1)}
    END {
        form = "%Y/%m/%d %H:%M:%S"
        printf "Oldest\nDate: %s\nFile: %s\n", strftime(form, min), fmin
        printf "Newest\nDate: %s\nFile: %s\n", strftime(form, max), fmax
    }'

Пример вывода:

Oldest
Date: 2020/08/29 01:52:23
File: test.java
Newest
Date: 2020/10/12 06:52:21
File: test.sh

Примечания:

  • Приведенный выше код обрабатывает пробелы в файлах, а не новые строки.
  • Я думаю, что awk strftime — это только GNU
0
18.03.2021, 22:57

Предполагая, что GNU awk:

gawk '
    {created[$NF] = $5 " " $6}
    END {
        PROCINFO["sorted_in"] = "@val_str_asc"
        for (f in created) {print "oldest:", f, created[f]; break}
        PROCINFO["sorted_in"] = "@val_str_desc"
        for (f in created) {print "newest:", f, created[f]; break}
    }
' file

Ссылка:Управление обходом массива и Использование предопределенных порядков сканирования массива с помощью gawk

0
18.03.2021, 22:57

Теги

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