Я использую ls -t | head -8
для показа последних 8 файлов, измененных в каталоге но это только печатает имя файла.
Существует ли способ изменить вышеупомянутую команду так, чтобы это показало измененную дату имен файлов также?
Вы захотите использовать stat
получить метаданные файла:
stat -c $'%y\t%n' * | sort -n | head -8
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
ls
команда не является самым соответствующим инструментом для использования в этой ситуации, как показано другими ответами. Существует замысловатый способ извлечь информацию, из которой Вы хотите от вывода ls
, хотя это действительно имеет ограничения. Это - вполне хороший пример как работа с ls
может быстро стать сложным.
Конкретный вопрос с этой цепочкой команд то, что использование tr
команда удаляет любые несколько случаев пробела и замен единственным пробелом. Это будет влиять на имена файлов, делая их неподходящими для парсинга машиной. Парсинг ls обычно является нежелательным действием все же.
ls -lrt| tail -4| tr -s ' '| cut -d ' ' -f6-| tac
Обратное упорядочивание ls
результаты, с -r
опция, используется для предотвращения 'Общей' строки, произведенной -l
опция ls
, и tac
используется в конце для переупорядочения результатов после обрезки далеко нежелательного вывода.