Sådan finder du og sorterer filer baseret på ændringsdato og -tid i Linux


Normalt har vi en vane med at gemme en masse information i form af filer på vores system. Nogle skjulte filer, nogle opbevares i en separat mappe, der er oprettet for at gøre det lettere for os at forstå, mens andre er som det er. Men alt dette fylder vores mapper; normalt desktop, hvilket får det til at ligne et rod. Men problemet opstår, når vi skal søge efter en bestemt fil, der er ændret på en bestemt dato og et bestemt tidspunkt i denne enorme samling.

Folk, der er fortrolige med GUI'er, kan finde det ved hjælp af File Manager, der viser filer i langt listeformat, hvilket gør det nemt at finde ud af, hvad vi ønskede, men de brugere, der har vane med sorte skærme, eller endda nogen, der arbejder på servere, der er blottet for GUI, ville ønsker en simpel kommando eller et sæt kommandoer, der kan lette deres søgning.

Virkelig skønhed ved Linux vises her, da Linux har en samling af kommandoer, som, hvis de bruges separat eller sammen, kan hjælpe med at søge efter en fil eller sortere en samling filer efter deres navn, dato for ændring, tidspunkt for oprettelse eller endda en hvilken som helst filter, du kunne tænke dig at anvende for at få dit resultat.

Her vil vi afsløre Linuxs virkelige styrke ved at undersøge et sæt kommandoer, der kan hjælpe med at sortere en fil eller endda en liste over filer efter dato og klokkeslæt.

Linux-hjælpeprogrammer til at sortere filer i Linux

Nogle grundlæggende Linux-kommandolinjeværktøjer, der bare er tilstrækkelige til at sortere en mappe baseret på dato og klokkeslæt, er:

ls - Listing af indholdet i biblioteket, dette værktøj kan liste filerne og katalogerne og kan endda liste alle statusoplysninger om dem inklusive: dato og klokkeslæt for ændring eller adgang, tilladelser, størrelse, ejer, gruppe osv.

Vi har allerede dækket mange artikler om Linux ls kommando og sorteringskommando, du kan finde dem nedenfor:

  1. Lær ls Kommando med 15 grundlæggende eksempler
  2. Lær 7 avancerede ls-kommandoer med eksempler
  3. 15 Nyttige interviewspørgsmål om ls Command i Linux

sorter - Denne kommando kan bruges til at sortere output fra enhver søgning bare efter et hvilket som helst felt eller en bestemt kolonne i feltet.

Vi har allerede dækket to artikler om Linux-sorteringskommando, du kan finde dem nedenfor:

  1. 14 Linux 'sorter' kommandoeksempler - del 1
  2. 7 Nyttige Linux 'sorter' kommandoeksempler - del 2

Disse kommandoer er i sig selv meget kraftige kommandoer at mestre, hvis du arbejder på sorte skærme og skal håndtere mange filer, bare for at få den, du ønsker.

Nogle måder at sortere filer ved hjælp af dato og klokkeslæt

Nedenfor er listen over kommandoer, der skal sorteres baseret på dato og klokkeslæt.

Nedenstående kommando viser filer i langt listeformat og sorterer filer baseret på ændringstid, nyeste først. For at sortere i omvendt rækkefølge skal du bruge -r switch med denne kommando.

# 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

Liste over filer i biblioteket baseret på den sidste adgangstid, dvs. baseret på det tidspunkt, hvor filen sidst blev åbnet, ikke ændret.

# 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

Liste over filer i biblioteket baseret på sidste ændringstid for filens statusoplysninger eller ctime . Denne kommando viser den fil først, hvis statusoplysninger som: ejer, gruppe, tilladelser, størrelse osv. Er blevet ændret for nylig.

# 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
...

Hvis -a switch bruges med ovenstående kommandoer, kan de liste og sortere selv de skjulte filer i det aktuelle bibliotek, og -r switch viser output i omvendt rækkefølge.

For mere dybtgående sortering, som f.eks. Sortering på Output of find-kommando, kan ls dog også bruges, men der er sort mere nyttigt, da output muligvis ikke kun har fil navn, men alle felter, som brugeren ønsker.

Nedenfor viser kommandoer brugen af sort med find kommando for at sortere listen over filer baseret på dato og klokkeslæt.

Hvis du vil lære mere om find kommando, skal du følge dette link: 35 Praktiske eksempler på 'find' kommando i Linux

Her bruger vi find -kommandoen til at finde alle filer i rod (‘/’) -mappen og derefter udskrive resultatet som: Måned, hvor filen blev åbnet, og derefter filnavn. Af det komplette resultat viser vi her de 11 bedste poster.

# 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

Nedenstående kommando sorterer output ved hjælp af nøglen som det første felt, specificeret af -k1 , og derefter sorteres den på måned som angivet af M foran den.

# 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

Her bruger vi igen find -kommandoen til at finde alle filerne i rodmappen, men nu udskriver vi resultatet som: sidste dato, filen blev åbnet, sidste gang filen blev åbnet og derefter filnavnet. Heraf tager vi de 11 bedste poster ud.

# 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

Nedenstående sorteringskommando sorterer først på basis af årets sidste ciffer, derefter sorteres på basis af sidste ciffer i måneden i omvendt rækkefølge og til sidst sorteres på basis af det første felt. Her betyder '1,8' 8. kolonne i første felt og 'n' foran betyder numerisk sortering, mens 'r' angiver sortering i omvendt rækkefølge.

# 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

Her bruger vi igen find -kommandoen til at liste de øverste 11 filer i rodmappen og udskrive resultatet i format: sidste gang filen blev åbnet og derefter filnavnet.

# 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

Nedenstående kommando sorterer output baseret på første kolonne i det første felt i output, som er det første ciffer i timen.

# 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

Denne kommando sorterer output fra ls -l -kommandoen baseret på 6. felt månedmæssigt og derefter baseret på 7. felt, der er dato, numerisk.

# 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

Konklusion

På samme måde kan du sortere næsten enhver liste baseret på ethvert felt og endda dens kolonne, du ønsker, ved at have en vis viden om sortkommando. Dette var nogle af tricks til at hjælpe dig med at sortere filer baseret på dato eller klokkeslæt. Du kan få dine egne tricks bygget baseret på disse. Men hvis du har et andet interessant trick, kan du altid nævne det i dine kommentarer.