Ответы:
Ты можешь использовать:
ls -Rt
где -R
означает рекурсивный (включая подкаталоги) и -t
означает «сортировку по дате последнего изменения».
Чтобы просмотреть список файлов, отсортированных по дате изменения, используйте:
ls -l -Rt
Для этого также можно создать псевдоним:
alias lt='ls -lht'
lt
Где -h
дает более читаемый результат.
ls -lrt[RhA]
. -r
порядок сортировки меняется на обратный, оставляя недавно отредактированные материалы внизу списка ...
-ila
дает вам практически всю информацию, которая вам может понадобиться. $ ls -ilaRt
ll -Rt
было для меня идеальным решением, поскольку мне нужно было видеть файлы по дате последнего изменения. Это может быть полезно другим.
ll
не существует и не является командой. В основном это псевдоним в оболочке bash, но не определен в большинстве / some /? дистрибутивы linux. Некоторые определяют его как alias ll='ls -l'
/etc/bash.bashrc или /etc/.bashrc. Таким образом, он может не работать и может не существовать в системе OP. Используйте, ls -l -Rt
по крайней мере, ls
стандартную команду, определенную posix. Или укажите, что вы имели в виду alias ll='ls -l'; ll -Rt
.
Если вам нужен главный список, в котором все файлы отсортированы по дате изменения, показывая каталог, в котором они находятся, но не сгруппированы по каталогам , вы можете использовать это:
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
Результат выглядит примерно так ls -l
:
-rw-r - r-- 1 root root 3892 11.08.2009 11:03:36 /usr/share/man/man1/xmllint.1.gz -rw-r - r-- 1 root root 22946 13.08.2009 11:59:20 /usr/share/man/man1/curl.1.gz -rw-r - r-- 1 root root 728 17.08.2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz -rw-r - r-- 1 root root 873 18.08.2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz -rw-r - r-- 1 root root 2552 19.08.2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz -rw-r - r-- 1 root root 9546 19.08.2009 02:02:00 /usr/share/man/man1/pidgin.1.gz -rw-r - r-- 1 root root 2201 19.08.2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz -rw-r - r-- 1 root root 926 19.08.2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz -rw-r - r-- 1 root root 18052 19.08.2009 04:11:47 /usr/share/man/man1/mono.1.gz -rw-r - r-- 1 root root 1845 19.08.2009 04:11:47 /usr/share/man/man5/mono-config.5.gz
Для тех из вас, кто использует Mac OS X, опция -printf недоступна в поиске BSD (вы получите эту ошибку :)find: -printf: unknown primary or operator
. К счастью, вы можете установить GNU find через Homebrew (также должна быть опция для Fink и Macports ):
brew install findutils
После его установки находка GNU должна быть доступна вам как gfind
. Итак, все, что вам нужно сделать, это изменить строку выше на:
gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '
find
как автор, эти аргументы -printf
являются директивами формата, которые можно найти в man find
(найдите пятый экземпляр printf
на этой странице).
find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' '
даст вам примерно такой же результат в MacOS, используя только встроенные утилиты
sort -r
, чтобы отменить сортировку и разместить наверху самые последние измененные файлы.
MAC OSX 2019
Если вам все равно, в какое время он был создан, но вы хотите отсортировать список, используйте эту команду
==> ls -t
Если вы хотите заказать и увидеть дату и информацию о пользователе, используйте эту команду
===> ls -lt
Для zsh
пользователей вы также можете использовать квалификаторы glob (также задокументированные man zshexpn
):
echo *(om)
Где o
означает порядок сортировки, вверх и m
означает время последней модификации .
Это может быть полезно при использовании в цикле for или другой команде:
for file in *(^om); do
[ -e "$file" ] || continue
# do something with file orderer from least recently modified to last modified
done
Или связан с другим квалификатором глобуса:
last_modified_file=(*(om[1]))