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

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

Find and Sort Files by Date and Time in Linux

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

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

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

Утилиты Linux для сортировки файлов в Linux

Некоторые основные утилиты командной строки Linux, которые вполне достаточны для сортировки каталога по дате и времени, включают:

команда ls

ls – Список содержимого каталога, данное утилита может выводить файлы и каталоги и может быть даже вывести все информацию о них, включая: дату и время изменения или доступа, разрешения, размер, владельца, группу и т. д.

Мы уже рассмотрели множество статей о Linux команде ls и команде sort, вы можете найти их ниже:

  1. Учите команду ls с 15 базовыми примерами
  2. Учите 7 продвинутых команд ls с примерами
  3. 15 полезных интервью вопросов о команде ls в Linux

команда sort

sort – Эта команда может использоваться для сортировки вывода любого поиска просто по любому полю или конкретному столбцу поля.

Мы уже рассмотрели две статьи о Linux команде sort, вы можете найти их ниже:

  1. 14 примеров Linux ‘sort’ команды – часть 1
  2. 7 полезных примеров Linux ‘sort’ команды – часть 2

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

Как отсортировать файлы по дате и времени

Below are the list of commands to sort based on Date and Time.

1. List Files Based on Modification Time

The below command lists files in long listing format, and sorts files based on modification time, newest first. To sort in reverse order, use '-r' switch with this command.

# ls -lt

total 673768
-rwxr----- 1 tecmint tecmint  3312130 Jan 19 15:24 When You Are Gone.MP3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony-1.mp3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony.mp3
-rwxr----- 1 tecmint tecmint  6629090 Jan 19 15:24 Westlife_Tonight.MP3
-rwxr----- 1 tecmint tecmint  3448832 Jan 19 15:24 We Are The World by USA For Africa (Michael Jackson).mp3
-rwxr----- 1 tecmint tecmint  8580934 Jan 19 15:24 This Love.mp3
-rwxr----- 1 tecmint tecmint  2194832 Jan 19 15:24 The Cross Of Changes.mp3
-rwxr----- 1 tecmint tecmint  5087527 Jan 19 15:24 T.N.T. For The Brain 5.18.mp3
-rwxr----- 1 tecmint tecmint  3437100 Jan 19 15:24 Summer Of '69.MP3
-rwxr----- 1 tecmint tecmint  4360278 Jan 19 15:24 Smell Of Desire.4.32.mp3
-rwxr----- 1 tecmint tecmint  4582632 Jan 19 15:24 Silence Must Be Heard 4.46.mp3
-rwxr----- 1 tecmint tecmint  4147119 Jan 19 15:24 Shadows In Silence 4.19.mp3
-rwxr----- 1 tecmint tecmint  4189654 Jan 19 15:24 Sarah Brightman  & Enigma - Eden (remix).mp3
-rwxr----- 1 tecmint tecmint  4124421 Jan 19 15:24 Sade - Smooth Operator.mp3
-rwxr----- 1 tecmint tecmint  4771840 Jan 19 15:24 Sade - And I Miss You.mp3
-rwxr----- 1 tecmint tecmint  3749477 Jan 19 15:24 Run To You.MP3
-rwxr----- 1 tecmint tecmint  7573679 Jan 19 15:24 Roger Sanchez_Another Chance_Full_Mix.mp3
-rwxr----- 1 tecmint tecmint  3018211 Jan 19 15:24 Principal Of Lust.3.08.mp3
-rwxr----- 1 tecmint tecmint  5688390 Jan 19 15:24 Please Forgive Me.MP3
-rwxr----- 1 tecmint tecmint  3381827 Jan 19 15:24 Obvious.mp3
-rwxr----- 1 tecmint tecmint  5499073 Jan 19 15:24 Namstey-London-Viraaniya.mp3
-rwxr----- 1 tecmint tecmint  3129210 Jan 19 15:24 MOS-Enya - Only Time (Pop Radio mix).m

2. List Files Based on Last Access Time

Listing of files in directory based on last access time, i.e. based on time the file was last accessed, not modified.

# ls -ltu

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Linux-ISO
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Music-Player
drwx------  3 tecmint tecmint       4096 Jan 19 15:22 tor-browser_en-US
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 bin
drwxr-xr-x 11 tecmint tecmint       4096 Jan 19 15:22 Android Games
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Songs
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 renamefiles
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 katoolin-master
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Tricks
drwxr-xr-x  3 tecmint tecmint       4096 Jan 19 15:22 Linux-Tricks
drwxr-xr-x  6 tecmint tecmint       4096 Jan 19 15:22 tuptime
drwxr-xr-x  4 tecmint tecmint       4096 Jan 19 15:22 xdm
drwxr-xr-x  2 tecmint tecmint      20480 Jan 19 15:22 ffmpeg usage
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 xdm-helper

3. List Files Based on Last Modification Time

Listing of files in directory based on last modification time of file’s status information, or the 'ctime'. This command would list that file first whose any status information like: owner, group, permissions, size etc has been recently changed.

# ls -ltc

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 13:05 img
-rw-------  1 tecmint tecmint     262191 Jan 19 12:15 tecmint.jpeg
drwxr-xr-x  5 tecmint tecmint       4096 Jan 19 10:57 Desktop
drwxr-xr-x  7 tecmint tecmint      12288 Jan 18 16:00 Downloads
drwxr-xr-x 13 tecmint tecmint       4096 Jan 18 15:36 VirtualBox VMs
-rwxr-xr-x  1 tecmint tecmint        691 Jan 13 14:57 special.sh
-rw-r--r--  1 tecmint tecmint     654325 Jan  4 16:55 powertop-2.7.tar.gz.save
-rw-r--r--  1 tecmint tecmint     654329 Jan  4 11:17 filename.tar.gz
drwxr-xr-x  3 tecmint tecmint       4096 Jan  4 11:04 powertop-2.7
-rw-r--r--  1 tecmint tecmint     447795 Dec 31 14:22 Happy-New-Year-2016.jpg
-rw-r--r--  1 tecmint tecmint         12 Dec 18 18:46 ravi
-rw-r--r--  1 tecmint tecmint       1823 Dec 16 12:45 setuid.txt
...

If '-a' switch is used with above commands, they can list and sort even the hidden files in current directory, and '-r' switch lists the output in reverse order.

For more in-depth sorting, like sorting on Output of find command, however ls can also be used, but there 'sort' proves more helpful as the output may not have only file name but any fields desired by user.

Нижеприведенные команды показывают использование команды sort с командой find для сортировки списка файлов по дате и времени.

Чтобы узнать больше о команде find, перейдите по ссылке: 35 практических примеров использования команды ‘find’ в Linux

4. Сортировка файлов по месяцу

Здесь мы используем команду find для поиска всех файлов в корневом каталоге (‘/’) и затем выводим результат в виде: месяц, в котором был доступен файл, а затем имя файла. Из этого полного результата мы перечисляем первые 11 записей.

# find / -type f -printf "\n%Ab %p" | head -n 11

Dec /usr/lib/nvidia/pre-install
Dec /usr/lib/libcpufreq.so.0.0.0
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libcdr-0.0.so.0.0.15
Dec /usr/lib/msttcorefonts/update-ms-fonts
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn

Нижеприведенная команда сортирует вывод, используя ключ в качестве первого поля, указанного как '-k1', а затем сортирует по месяцу, указанному как 'M' перед ним.

# find / -type f -printf "\n%Ab %p" | head -n 11 | sort -k1M

Apr /usr/lib/libcdr-0.0.so.0.0.15
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn
Dec /usr/lib/libcpufreq.so.0.0.0
Dec /usr/lib/msttcorefonts/update-ms-fonts
Dec /usr/lib/nvidia/pre-install

5. Сортировка файлов по дате

Здесь снова мы используем команду find для поиска всех файлов в корневом каталоге, но теперь мы выводим результат в виде: последняя дата, когда был доступен файл, последнее время, когда был доступен файл, а затем имя файла. Из этого мы выбираем первые 11 записей.

# find / -type f -printf "\n%AD %AT %p" | head -n 11

12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

Нижеприведенная команда сортирует сначала по основе последней цифры года, затем сортирует по основе последней цифры месяца в обратном порядке, и, наконец, сортирует по основе первого поля. Здесь ‘1.8’ означает 8-й столбец первого поля, а ‘n’ перед ним означает числовую сортировку, а ‘r’ указывает сортировку в обратном порядке.

# find / -type f -printf "\n%AD %AT %p" | head -n 11 | sort -k1.8n -k1.1nr -k1

12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0

6. Сортировка файлов по времени

Здесь мы снова используем команду find для вывода списка 11 верхних файлов в корневом каталоге и печати результата в формате: последнее время доступа к файлу, а затем имя файла.

# find / -type f -printf "\n%AT %p" | head -n 11

11:30:38.0000000000 /usr/lib/nvidia/pre-install
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

Ниже приведена команда, сортирующая вывод на основе первого столбца первого поля вывода, который представляет собой первую цифру часа.

# find / -type f -printf "\n%AT %p" | head -n 11 | sort -k1.1n

06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11:30:38.0000000000 /usr/lib/nvidia/pre-install
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

7. Сортировка вывода ls -l на основе даты

Эта команда сортирует вывод команды 'ls -l' по месяцам в шестом поле, а затем по дате в седьмом поле, численно.

# ls -l | sort -k6M -k7n

total 116
-rw-r--r-- 1 root root     0 Oct  1 19:51 backup.tgz
drwxr-xr-x 2 root root  4096 Oct  7 15:27 Desktop
-rw-r--r-- 1 root root 15853 Oct  7 15:19 powertop_report.csv
-rw-r--r-- 1 root root 79112 Oct  7 15:25 powertop.html
-rw-r--r-- 1 root root     0 Oct 16 15:26 file3
-rw-r--r-- 1 root root    13 Oct 16 15:17 B
-rw-r--r-- 1 root root    21 Oct 16 15:16 A
-rw-r--r-- 1 root root    64 Oct 16 15:38 C

Заключение

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

Source:
https://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/