Как вывести список последних пяти измененных файлов в 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 обеспечивает подробный просмотр.