Lệnh find được sử dụng khi nào? Sắp xếp tệp dựa trên ngày và giờ sửa đổi

Lệnh find được sử dụng khi nào? Chúng ta thường lưu rất nhiều thông tin dưới dạng tệp trên hệ thống của chúng ta. Một số tệp ẩn, một số được lưu trong một thư mục riêng được tạo ra để dễ hiểu, trong khi một số khác là nguyên vẹn. Nhưng, những thứ này làm đầy các thư mục của chúng ta, thường là desktop, làm cho nó trông lộn xộn. Nhưng, vấn đề phát sinh khi chúng ta cần tìm kiếm một tệp cụ thể đã được sửa đổi vào một ngày và thời gian cụ thể trong bộ sưu tập lớn này.

Find and Sort Files by Date and Time in Linux
Tìm kiếm và sắp xếp tệp theo ngày và thời gian trong Linux

Người dùng thoải mái với GUI có thể tìm nó bằng công cụ quản lý tệp, nơi liệt kê các tệp theo định dạng liệt kê dài, làm cho nó dễ dàng để tìm hiểu những gì chúng ta muốn, nhưng những người dùng có thói quen làm việc trên màn hình đen, hoặc ngay cả bất kỳ ai làm việc trên các máy chủ mà không có GUI sẽ muốn một lệnh đơn giản hoặc một tập hợp các lệnh có thể giúp tìm kiếm dễ dàng hơn.

Đẹp thực sự của Linux hiển thị ở đây, vì Linux có một bộ sưu tập các lệnh mà nếu sử dụng riêng rẽ hoặc cùng nhau có thể giúp tìm kiếm tệp, hoặc sắp xếp một bộ sưu tập tệp theo tên, ngày sửa đổi, thời gian tạo, hoặc thậm chí bất kỳ bộ lọc nào bạn có thể nghĩ đến áp dụng để có kết quả bạn cần.

Ở đây, chúng tôi sẽ tiết lộ sức mạnh thực sự của Linux bằng cách xem xét một tập hợp các lệnh có thể giúp sắp xếp một tệp hoặc một danh sách các tệp theo Ngày và Thời gian.

Tiện ích Linux để sắp xếp tệp trong Linux

Một số tiện ích dòng lệnh Linux cơ bản chỉ cần đủ để sắp xếp một thư mục dựa trên Ngày và Thời gian là:

Lệnh ls

ls – Liệt kê nội dung của thư mục, tiện ích này có thể liệt kê các tệp và thư mục và thậm chí liệt kê tất cả các thông tin trạng thái về chúng bao gồm: ngày và giờ sửa đổi hoặc truy cập, quyền, kích thước, chủ sở hữu, nhóm vv.

Lệnh sort

Sort – Lệnh này có thể được sử dụng để sắp xếp đầu ra của bất kỳ tìm kiếm nào chỉ bằng bất kỳ trường nào hoặc một cột cụ thể nào của trường đó.

Các lệnh này là những lệnh rất mạnh mẽ để nắm vững nếu bạn làm việc trên màn hình đen và phải đối mặt với rất nhiều tệp, chỉ để có được cái bạn muốn.

Một số cách sắp xếp tệp theo ngày và giờ

Dưới đây là danh sách các lệnh để sắp xếp dựa trên Ngày và Thời gian.

1. Liệt kê file dựa trên thời gian sửa đổi

Lệnh dưới đây liệt kê các tệp dưới dạng liệt kê dài, và sắp xếp các tệp theo thời gian sửa đổi, mới nhất trước. Để sắp xếp theo thứ tự ngược lại, sử dụng công tắc '-r' với lệnh này.

# 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. Liệt kê các tập tin dựa trên thời gian truy cập lần cuối

Liệt kê các tệp trong thư mục dựa trên thời gian truy cập cuối cùng, tức là dựa trên thời gian thư mục được truy cập lần cuối, không phải sửa đổi.

# 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. Liệt kê các tập tin dựa trên thời gian sửa đổi lần cuối

Liệt kê các tệp trong thư mục dựa trên thời gian chỉnh sửa cuối cùng của thông tin trạng thái của tệp, hoặc 'ctime'. Lệnh này sẽ liệt kê tệp đầu tiên mà thông tin trạng thái bất kỳ như: chủ sở hữu, nhóm, quyền, kích thước... đã được thay đổi gần đây.

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

Nếu sử dụng công tắc '-a' với các lệnh trên, chúng cũng có thể liệt kê và sắp xếp các tệp ẩn trong thư mục hiện tại, và công tắc '-r' liệt kê đầu ra theo thứ tự ngược lại.

Đối với việc sắp xếp chi tiết hơn, như sắp xếp dựa trên Kết quả của lệnh find , tuy nhiên có thể sử dụng ls cũng có thể được sử dụng, nhưng 'sắp xếp' chứng minh hữu ích hơn khi đầu ra có thể không chỉ có tên tệp mà bất kỳ trường mong muốn nào mà người dùng yêu cầu.

Các lệnh dưới đây cho thấy cách sử dụng sắp xếp cùng với lệnh find để sắp xếp danh sách các tệp theo Ngày và Thời gian.

4. Sắp xếp tệp theo tháng

Ở đây, chúng tôi sử dụng lệnh find để tìm tất cả các tệp trong thư mục gốc (‘/’) rồi in kết quả dưới dạng: Tháng mà tệp được truy cập và sau đó là tên tệp. Trong đó, chúng ta chỉ liệt kê ra 11 mục hàng đầu.

# 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

Lệnh dưới đây sắp xếp đầu ra bằng cách sử dụng khóa là trường đầu tiên, được xác định bởi '-k1' và sau đó nó được sắp xếp theo Tháng được chỉ định bởi 'M' ở đầu nó.

# 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. Sắp xếp tệp dựa trên ngày

Ở đây, chúng tôi sử dụng lại lệnh find để tìm tất cả các tệp trong thư mục gốc, nhưng lần này chúng tôi sẽ in kết quả dưới dạng: ngày cuối cùng mà tệp được truy cập, giờ cuối cùng mà tệp được truy cập và sau đó là tên tệp. Chúng tôi chỉ liệt kê 11 mục hàng đầu trong đó.

# 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

Lệnh sắp xếp dưới đây trước tiên sắp xếp theo cơ sở của chữ số cuối cùng của năm, sau đó sắp xếp theo cơ sở của chữ số cuối cùng của tháng theo thứ tự ngược và cuối cùng sắp xếp theo cơ sở của trường thứ nhất. Ở đây,‘1.8‘ có nghĩa là cột 8 của trường đầu tiên và ‘n’ trước nó có nghĩa là sắp xếp số, trong khi ‘r’ biểu thị sắp xếp theo thứ tự ngược lại.

# 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. Sắp xếp tệp dựa trên thời gian

Ở đây, chúng tôi sử dụng lại lệnh find để liệt kê 11 tệp hàng đầu trong thư mục gốc và in kết quả theo định dạng: giờ cuối cùng mà tệp được truy cập và sau đó là tên tệp.

# 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

Lệnh sắp xếp dưới đây sắp xếp đầu ra dựa trên cột đầu tiên của trường đầu tiên của đầu ra, là chữ số đầu tiên của giờ.

# 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. Sắp xếp kết quả của ls -l dựa trên Ngày

Lệnh này sắp xếp đầu ra của lệnh 'ls -l' dựa trên trường tháng thứ 6, sau đó dựa trên trường ngày (là số) theo cách số học.

# 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

Lệnh find được sử dụng khi nào? Lệnh find có nhiều cách dùng khác nhau. Tương tự, bằng cách có một số kiến thức về sắp xếp , bạn có thể sắp xếp gần như bất kỳ danh sách nào dựa trên bất kỳ trường nào và thậm chí bất kỳ cột nào trong số đó bạn mong muốn. Đó là một số thủ thuật để giúp bạn sắp xếp các tệp dựa trên Ngày hoặc Thời gian. Bạn có thể xây dựng những thủ thuật riêng của mình dựa trên những điều này.