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

$ sed -e 's/stringA/\n/;s/.*\n//;s/stringB.*//' file 

Удаление кода до строки A выполняется в 2 этапа. (измените строку A на новую строку, а затем удалите первую строку )вместо более очевидного «удалить все до строки A», поскольку удаление должно быть до первого вхождения строки A, а не последнего. sed не поддерживает не -жадные регулярные выражения, в отличие от многих других инструментов, таких как python и perl.

$ perl -lpe '
    my($sa, $sb) = qw/stringA stringB/;
    my $p2 = index($_, $sb);
    my $p1 = index($_, $sa)+length($sa);
    $_ = substr($_, $p1, $p2-$p1);
'  file
2
31.10.2020, 22:44
1 ответ

С утилитами GNU,

ls -1t | sort -nst '_' -k 1,1
  • ls -1tсортирует по времени модификации, выводя по одному файлу в строке.

  • sort:

    • -n:Выполнить числовую сортировку,
    • -t '_':Используйте подчеркивание в качестве разделителя полей,
    • -k 1,1:Сортировать первое поле (, т. е. две цифры перед первым символом подчеркивания ),
    • -s:Выполните стабильную сортировку, т. е. не используйте следующие поля для сортировки, если две строки имеют одно и то же 1-е поле.

Если вы предпочитаете вывод в формате длинного списка,

ls -lt | sort -nsk 9.2

Клавиша 9.2означает :Сортировать только первые два символа 9-го поля.

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

5
18.03.2021, 22:53

Теги

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