Список файлів за останнім часом редагування


104

У мене каталог: /home/user/

Як я можу перерахувати кожен файл у цьому каталозі (включаючи файли в підкаталогах) і замовити їх за датою останнього зміни?

Відповіді:


172

Ви можете використовувати:

ls -Rt

де -Rозначає рекурсивну (включають підкаталоги) і -tозначає "сортувати за останньою датою модифікації".


Щоб переглянути список файлів, відсортованих за зміною дати, скористайтеся:

ls -l -Rt

Для цього можна також створити псевдонім:

alias lt='ls -lht'
lt

Де -hдає більш читабельний вихід.


16
Дякую, це ідеально. Я також додав -лі там, щоб я міг побачити дати, тому для всіх, хто шукає це пізніше, це - $ ls -lRt
Марті

4
Якщо ви робите це під час підказок і хочете побачити останні змінені файли, врахуйте ls -lrt[RhA]. -rзмінює порядок сортування, залишивши недавно відредагований матеріал в нижній частині списку ...
dmckee --- екс-сповільнювач кошеня

Це додає до -ilaподання майже всієї інформації, яка вам знадобиться. $ ls -ilaRt
Falkenfighter

Я розширив цю відповідь, тому що використання ll -Rtбуло ідеальним рішенням для мене, оскільки мені потрібно було переглянути файли за останніми зміненими датами. Це може бути корисним для інших.
Мус

@MusTheDataGuy llне існує і не є командою. Це здебільшого псевдонім башма, але не визначений у більшості / деяких /? Linux дистрибутиви Деякі визначають це як alias ll='ls -l'у /etc/bash.bashrc або /etc/.bashrc. Таким чином, він може не працювати і він може не існувати в системі ОП. Використовуйте ls -l -Rtщонайменше, як lsце стандартна команда, як визначено позицією. Або вкажіть, що ви мали на увазі alias ll='ls -l'; ll -Rt.
KamilCuk

73

Якщо вам потрібен головний список, в якому всі файли сортуються разом за датою модифікації, показуючи каталог, у якому вони перебувають, але не згруповані за каталогом , ви можете використовувати це:

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 корінь кореня 3892 08.11.2009 11:03:36 /usr/share/man/man1/xmllint.1.gz
-rw-r - r-- 1 корінь кореня 22946 13.08.2009 11:59:20 /usr/share/man/man1/curl.1.gz
-rw-r - r-- 1 корінь кореня 728 17.08.2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz
-rw-r - r-- 1 корінь кореня 873 18.08.2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz
-rw-r - r-- 1 корінь кореня 2552 19.08.2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz
-rw-r - r-- 1 корінь кореня 9546 08.08.2009 02:02:00 /usr/share/man/man1/pidgin.1.gz
-rw-r - r-- 1 корінь кореня 2201 19.08.2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz
-rw-r - r-- 1 корінь кореня 926 19.08.2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz
-rw-r - r-- 1 корінь кореня 18052 19.08.2009 04:11:47 /usr/share/man/man1/mono.1.gz
-rw-r - r-- 1 корінь кореня 1845 19.08.2009 04:11:47 /usr/share/man/man5/mono-config.5.gz

Mac OS X

Для тих, хто використовує Mac OS X, опція -printf недоступна в пошуку BSD (ви отримаєте цю помилку:) find: -printf: unknown primary or operator. На щастя, ви можете встановити GNU через 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 ' '

3
Хороший. Вся справа в групуванні каталогу з ls -R дратує.
Ель Йобо

1
Чудовий код, сценарій знадобився ок. 5 секунд, щоб сортувати та роздрукувати 13k фотографій у багатьох різних папках (через Cygwin на досить повільному комп'ютері).
Магнус

О, це зараз приголомшливо. Для людей (таких як я), не таких знайомих, findяк автор, ці аргументи - -printfце директиви формату, які можна знайти man find(пошук п'ятого примірника printfна цій сторінці).
Оуен Блекер

4
Для тих, хто хоче використовувати це на MacOS, але не хоче заважати встановленню findutils: find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' 'дасть вам приблизно такий же вихід на MacOS, використовуючи лише вбудовані утиліти
Jaymon

sort -rщоб змінити сортування та мати останні оновлені файли зверху.
maryisdead

0

MAC OSX 2019

Якщо вам не байдуже, у який час він був створений, але ви хочете, щоб ваш список був відсортований, використовуйте цю команду

==> ls -t

Якщо ви хочете замовити та переглянути дату та інформацію про користувача, використовуйте цю команду

===> ls -lt


0

Для zshкористувачів ви також можете використовувати глобальні класифікатори (також задокументовані на 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]))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.