Найдите самый старый файл в дереве каталогов в Linux
На днях один пользователь Linux спросил меня, как найти самый старый файл в каталоге из командной строки в Linux. Мы могли бы определить самый старый файл в каталоге, используя метки даты и времени в режиме графического интерфейса. Но я не знаю, как найти его из командной строки. К счастью, я нашел это решение после небольшого поиска в Google. Если вы когда-нибудь задавались вопросом, как найти самый старый файл в каталоге или во всей файловой системе, читайте дальше. Это не так уж и сложно.
Найдите самый старый файл в дереве каталогов Linux.
Чтобы найти самый старый файл в каталоге, например /home/sk/ostechnix/
, выполните:
find /home/sk/ostechnix/ -type f -printf '%T+ %p\n' | sort | head -n 1
Давайте разберем эту команду и посмотрим, что делает каждый аргумент командной строки.
Здесь,
найти
— поиск файлов в иерархии каталогов./home/sk/ostechnix/
— местоположение поиска.type -f
— ищет только обычные файлы.-printf '%T+ %p\n'
– печатает дату и время последнего изменения файла, разделенные+
. символ. (Например. 2015-07-22+13:42:40.0000000000). Здесь%p
указывает имя файла.\n
указывает на новую строку.сортировать | head -n 1
— командаsort
сортирует выходные данные и отправляет их вhead
< Команда для отображения самого старого файла. Здесь-n 1
указывает только один файл, то есть самый старый файл.
Как вы, возможно, уже знаете, Explainshell помогает вам узнать, что делает каждая часть команды Linux.
Приведенная выше команда вернула следующий результат:
2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf
Как видно из приведенного выше вывода, Absolute FreeBSD_ 2nd Edition.pdf является самым старым файлом в каталоге /home/sk/ostechnix/
.
Обратите внимание, что Linux не находит самый старый файл по дате его создания. Вместо этого для его поиска используется дата изменения файла.
Аналогично, чтобы найти пять самых старых файлов в заданном каталоге, просто запустите:
find /home/sk/ostechnix/ -type f -printf '%T+ %p\n' | sort | head -n 5
Пример вывода:
2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf
2016-11-28+21:03:05.0000000000 /home/sk/ostechnix/Etcher-linux-x64.AppImage
2016-12-14+18:28:20.5162190000 /home/sk/ostechnix/ubuntu.jpg
2016-12-18+18:14:46.5931480000 /home/sk/ostechnix/Marconi Union - Sleepless.mp3
2017-03-17+19:28:27.8193330000 /home/sk/ostechnix/The Devops toolkit.pdf
Самый старый файл будет отображаться первым.
Чтобы найти самый старый файл во всей корневой файловой системе (/
), выполните:
sudo find / -type f -printf '%T+ %p\n' | sort | head -n 1
Обновление:
Другой пользователь Linux указал в разделе комментариев ниже, как найти самые старые или самые новые файлы в каталоге. Это намного проще моего метода.
Чтобы узнать самый старый файл в каталоге, перейдите в этот каталог и запустите:
ls -lt | tail -1
Чтобы узнать самый новый файл в каталоге:
ls -ltr | tail -1
Надеюсь, это было полезно.