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