Поиск по сайту:

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


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

Примечание. Команды Linux чувствительны к регистру.

Использование команды ls

Команда ls — одна из наиболее часто используемых команд в Linux для вывода списка файлов и каталогов. Мы можем использовать команду ls для вывода списка файлов в каталоге, отсортированных по времени изменения, используя опцию -t. Затем мы можем использовать команду «head» для отображения первых пяти файлов из списка. Следующая команда выводит список последних пяти измененных файлов в текущем каталоге:

$ ls -lt | head -n 6

Выход

total 31654651
-drwx-r--r--    7 user  root   1.2K   11 Dec   11:22 linuxfile.py
-rw-r--r--      5 user  root   2.7M   10 Dec   15:26 script-linux.pdf
-rw-r--r--      1 user  root   9.2M   9 Dec    16:21 win_scp.pdf
-rw-r--r--      4 user  root   502K   8 Dec    10:20 class1.pdf
-rw-rw-rw-      1 user  root   2.0M   5 Dec    22:06 script23.jpg

Опция -l отображает файлы в формате длинного списка, включая права доступа к файлам, владельца, размер и время изменения. Опция -t сортирует файлы по времени модификации в порядке убывания, причем самый последний измененный файл находится вверху. Команда head отображает первые шесть строк, которые включают заголовки столбцов и последние пять измененных файлов.

Теперь мы увидим, как использовать команду «сортировка» для вывода списка всех пяти последних измененных файлов. Как показано ниже, нам нужно указать путь к каталогу и использовать ключевое слово sort с хвостом, чтобы получить последние пять измененных файлов.

$ find /home/cg/root/ -type f -printf '%T@\t%p
' | sort -n | tail -5

Выход

1684171184.3445822090	/home/cg/root/6462638544588/main.py
1684171184.7965797450	/home/cg/root/6462695907cd6/main.py
1684171186.4405707830	/home/cg/root/646264dd4a983/main.lua
1684171186.9005682750	/home/cg/root/64625da89eee4/main.lua
1684171188.9325571980	/home/cg/root/6462694c393df/main.pl

Использование команды поиска

Команда find — еще одна полезная команда в Linux для поиска файлов и каталогов по различным критериям, таким как имя, размер и время изменения. Мы можем использовать команду find для поиска всех файлов в каталоге и его подкаталогах, которые были изменены в течение последних 24 часов, используя параметр времени -m. Затем мы можем использовать команду head для отображения первых пяти файлов из списка. Следующая команда выводит список последних пяти измененных файлов в текущем каталоге и его подкаталогах:

$ find . -type f -mtime -1 -print0 | xargs -0 ls -lt | head -n 6

Выход

2494345    4  drwxr-xr-x   3  root  root     496  Dec 20 12:55 /root/home/shell.py
2490782    4  -rw-r--r--       1  root  root     418  Dec  8  03:54 /root/home/sh/remote.sh
2435566    4  drwxr-xr-x   3  root  root    4096 Dec 20 12:54 /root/home/shell3.sh
2494508    4  -rw-r--r--       1  root  root      436 Dec 20 12:54 /root/home/script/test3/sh
2344324    4  drwxr-xr-x   6  root  root    4096 Dec 20 12:53 /root/home/test.py

Команда find ищет все файлы (-type f) в текущем каталоге (.) и его подкаталогах, которые были изменены в течение последних 24 часов (-m время -1), и печатает их имена с нулевым символом завершения (-print 0). Команда x args считывает список имен файлов, завершающихся нулем, из find и передает их в качестве аргументов команде ls, которая сортирует файлы по времени изменения и отображает их в формате длинного списка (-lt). Команда head отображает первые шесть строк, которые включают заголовки столбцов и последние пять измененных файлов.

Теперь мы увидим, как использовать команду «stat» для вывода списка всех пяти последних измененных файлов. Как показано ниже, нам нужно указать путь к каталогу и использовать ключевое слово sort с заголовком, чтобы получить последние пять измененных файлов.

$ find /home/cg/root -type f -exec stat --format '%Y %n' {} + | sort -nr | head -5 

Выход

1684172257 /home/cg/root/646267076a666/demo.m
1684172255 /home/cg/root/64626d0533a41/testing.txt
1684172255 /home/cg/root/646267bba8bdf/main.pl
1684172254 /home/cg/root/646267eb29beb/demo.m
1684172250 /home/cg/root/64626d8526584/main.lua

Заключение

В этой статье мы рассмотрели два метода получения списка последних пяти измененных файлов в Linux. Команда ls — это простой и эффективный способ просмотреть список последних измененных файлов в каталоге. Команда find — более мощный и гибкий способ поиска файлов по различным критериям, включая время изменения, тогда как команда stat обеспечивает подробный просмотр.

Статьи по данной тематике: