Использование LS для показа измененной даты и определенное количество файлов

Я использую ls -t | head -8 для показа последних 8 файлов, измененных в каталоге но это только печатает имя файла.

Существует ли способ изменить вышеупомянутую команду так, чтобы это показало измененную дату имен файлов также?

1
задан 6 June 2018 в 17:38

3 ответа

Вы захотите использовать stat получить метаданные файла:

stat -c $'%y\t%n' * | sort -n | head -8
4
ответ дан 3 December 2019 в 06:29

stat простой способ, но он не может распечатать метку времени в формате как ls -l. Если Вы хотите более мелкомодульное управление форматом, использовать find с -printf опция вместо этого, например, для (почти) ls -l- как формат:

find -maxdepth 1 -type f -printf "%T+#%Tb %Td %TH:%TM\t%p\n" | sort -rn | cut -d# -f2- | head -8

%T+ необходим для сортировки вывода правильно и удален cut aftwerwards. Читать man find узнать больше оfindмощный -printf опция.

Пример выполняется

$ ls -l
total 0
-rw-rw-r-- 1 dessert dessert 0 May 30 20:22 last week
-rw-rw-r-- 1 dessert dessert 0 Jun  6 17:22 today
-rw-rw-r-- 1 dessert dessert 0 Jun  5 17:22 yesterday
$ stat -c $'%y\t%n' * | sort -n
2018-05-30 20:22:29.919608691 +0200     last week
2018-06-05 17:22:10.207084356 +0200     yesterday
2018-06-06 17:22:01.940284127 +0200     today
$ find -maxdepth 1 -type f -printf "%T+#%Tb %Td %TH:%TM\t%p\n" | sort -rn | cut -d# -f2-
Jun 06 17:22    ./today
Jun 05 17:22    ./yesterday
May 30 20:22    ./last week
$ find -maxdepth 1 -type f -printf "%T+#%Tc\t%p\n" | sort -rn | cut -d# -f2-
Wed 06 Jun 2018 05:22:01 PM CEST        ./today
Tue 05 Jun 2018 05:22:10 PM CEST        ./yesterday
Wed 30 May 2018 08:22:29 PM CEST        ./last week
$ find -maxdepth 1 -type f -printf "%T+\t%p\n" | sort -rn
2018-06-06+17:22:01.9402841270  ./today
2018-06-05+17:22:10.2070843560  ./yesterday
2018-05-30+20:22:29.9196086910  ./last week
2
ответ дан 3 December 2019 в 06:29

ls команда не является самым соответствующим инструментом для использования в этой ситуации, как показано другими ответами. Существует замысловатый способ извлечь информацию, из которой Вы хотите от вывода ls, хотя это действительно имеет ограничения. Это - вполне хороший пример как работа с ls может быстро стать сложным.

Конкретный вопрос с этой цепочкой команд то, что использование tr команда удаляет любые несколько случаев пробела и замен единственным пробелом. Это будет влиять на имена файлов, делая их неподходящими для парсинга машиной. Парсинг ls обычно является нежелательным действием все же.

ls -lrt| tail -4| tr -s ' '| cut -d ' ' -f6-| tac

Обратное упорядочивание ls результаты, с -r опция, используется для предотвращения 'Общей' строки, произведенной -l опция ls, и tac используется в конце для переупорядочения результатов после обрезки далеко нежелательного вывода.

0
ответ дан 3 December 2019 в 06:29

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

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