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

Найдите самый старый файл в дереве каталогов в 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

Надеюсь, это было полезно.

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