Lệnh find của Linux: tùy chọn -name, -type, -size, -mtime và -delete

Môi trường thử nghiệmHọ RHELAlmaLinux 9.8findutils 4.8Tài khoản rootDebian 12 · findutils 4.9 tài khoản thườngKiểm tra ngày 2026-10-31

Lệnh find của Linux đi lần lượt xuống từ thư mục bắt đầu và tìm các tệp, thư mục khớp với điều kiện như tên, loại, kích thước, thời gian sửa đổi và quyền. Khi tạo mười tệp trong thư mục thử nghiệm trên máy chủ AlmaLinux 9 và chạy lệnh, đổi từng điều kiện một, chúng tôi đã chuyển các tệp tìm thấy bằng -exec sang lệnh khác, và khi xóa thì kiểm tra danh sách trước bằng cùng điều kiện rồi mới dùng -delete.

Đường dẫn thư mục thử nghiệm và thời gian tệp trong các ô kết quả đã được đổi thành giá trị ví dụ. Với đầu ra của máy chủ Debian 12, chỉ đường dẫn thư mục home là giá trị ví dụ, phần còn lại giữ nguyên.

1️⃣ Cách dùng lệnh find của Linux

  • ↪️ Đường dẫn bắt đầu, -name và -iname

Dạng cơ bản là [find đường-dẫn-bắt-đầu điều-kiện]. Nếu bỏ đường dẫn bắt đầu, find tìm ở thư mục hiện tại (.), và nếu bỏ điều kiện, nó in mọi tệp và thư mục dưới đường dẫn bắt đầu.

Thử nghiệm được thực hiện trong /root/work với ba thư mục và mười tệp như bên dưới.

/root/work
docs/
readme.txt450 byte · 3 ngày trước
guide.txt5,000 byte
old.tmp64 byte · 10 ngày trước
logs/
app.log2MB
cache.tmp512 byte · 10 ngày trước
backup/Thư mục trống
report.txt1,200 byte
README.md300 byte · 3 ngày trước
run.sh18 byte · quyền 755
my notes.txt150 byte · 3 ngày trước · quyền 600
empty.txt0 byte
find /root/work
/root/work
/root/work/docs
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/backup
/root/work/report.txt
/root/work/README.md
/root/work/run.sh
/root/work/my notes.txt
/root/work/empty.txt

find không sắp xếp kết quả theo tên; trong lần chạy này, khi đến thư mục docs, nó in hết các tệp bên trong trước rồi mới sang logs.

Nếu viết nối tiếp nhiều điều kiện, chỉ các tệp khớp tất cả mới còn lại.

-name chỉ so tên tệp với mẫu, không so đường dẫn. Hãy bọc mẫu bằng dấu nháy đơn để shell không mở rộng * trước mà chuyển nguyên cho find.

find /root/work -name '*.txt'
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/report.txt
/root/work/my notes.txt
/root/work/empty.txt

-name phân biệt chữ hoa thường. Tìm tên bắt đầu bằng readme chỉ ra docs/readme.txt, đổi sang -iname thì ra cả README.md.

find /root/work -name 'readme*'
/root/work/docs/readme.txt
find /root/work -iname 'readme*'
/root/work/docs/readme.txt
/root/work/README.md

find nằm trong gói findutils. Phiên bản ở dòng đầu của [find --version] là findutils 4.8 trên máy chủ AlmaLinux 9.8 và 4.9 trên máy chủ Debian 12.

2️⃣ find -type d và -maxdepth

  • ↪️ Chọn tệp hoặc thư mục và độ sâu tìm kiếm

-type f chỉ giữ tệp thường, -type d chỉ giữ thư mục.

find /root/work -type d
/root/work
/root/work/docs
/root/work/logs
/root/work/backup

Đường dẫn bắt đầu /root/work cũng là thư mục nên hiện ở dòng đầu. Đổi sang -type f trên cùng đường dẫn thì hiện đủ mười tệp.

-maxdepth đặt số cấp đi xuống từ đường dẫn bắt đầu. Với -maxdepth 1, các tệp trong docs và logs bị loại, chỉ còn năm tệp ngay dưới /root/work.

find /root/work -maxdepth 1 -type f
/root/work/report.txt
/root/work/README.md
/root/work/run.sh
/root/work/my notes.txt
/root/work/empty.txt

Ngược lại, -mindepth 2 bỏ qua những gì ngay dưới đường dẫn bắt đầu và chỉ in năm tệp trong thư mục con.

find /root/work -mindepth 2 -type f
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

Trang man khuyên viết tùy chọn toàn cục như -maxdepth ngay sau đường dẫn bắt đầu. Viết -maxdepth 1 sau -type f vẫn cho cùng năm tệp, nhưng trong terminal sẽ có một dòng cảnh báo yêu cầu đặt tùy chọn toàn cục lên trước (theo trang man).

Để chỉ xem có bao nhiêu thư mục hay tệp, hãy chuyển đầu ra cho wc -l. Đếm đầu ra của -type d được 4, kể cả đường dẫn bắt đầu.

find /root/work -type d | wc -l
4

Thêm -maxdepth 1 vẫn được 4, vì cả ba thư mục con đều ngay dưới đường dẫn bắt đầu.

find /root/work -maxdepth 1 -type d | wc -l
4

Đếm riêng các tệp trong thư mục con bằng -mindepth 2 được 5.

find /root/work -mindepth 2 -type f | wc -l
5

3️⃣ Điều kiện kích thước và thời gian của lệnh find

  • ↪️ -size, -mtime, -mmin, -newer, -empty

Dấu + trước số nghĩa là lớn hơn giá trị đó, - là nhỏ hơn, không có dấu là đúng giá trị đó. Đơn vị của -size ở bảng bên dưới (theo trang man).

Đơn vịKích thướcCó
c1 byte-size +500c
k1,024 byte-size +1k
M1,048,576 byte-size +1M
G1,073,741,824 byte-size +1G
(không có)Khối 512 byte-size +2
find /root/work -type f -size +1k
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt

Các tệp lớn hơn 1k là guide.txt 5,000 byte, app.log 2MB và report.txt 1,200 byte.

find /root/work -size +1M
/root/work/logs/app.log

Viết -size hai lần để đặt khoảng thì chỉ còn hai tệp lớn hơn 1k và nhỏ hơn 100k.

find /root/work -type f -size +1k -size -100k
/root/work/docs/guide.txt
/root/work/report.txt

-size chia kích thước cho đơn vị rồi làm tròn lên trước khi so sánh. Vì vậy README.md 300 byte cũng tính là 1k, và -size -1k chỉ ra empty.txt có kích thước 0.

find /root/work -type f -size -1k
/root/work/empty.txt

Để xem điều kiện thời gian, chúng tôi đặt thời gian sửa đổi của README.md, my notes.txt và docs/readme.txt về 3 ngày trước, hai tệp .tmp về 10 ngày trước. Mỗi tệp lưu ba mốc thời gian là truy cập, sửa đổi và thay đổi, có thể kiểm tra bằng lệnh stat.

-mtime đếm thời gian từ lần sửa đổi cuối theo đơn vị 24 giờ. -mtime -1 cho năm tệp tạo trong 24 giờ.

find /root/work -type f -mtime -1
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-mtime +7 chỉ cho hai tệp .tmp đặt về 10 ngày trước. Hãy dùng dạng này để kiểm tra danh sách trước khi xóa nhật ký cũ hoặc tệp tạm.

find /root/work -type f -mtime +7
/root/work/docs/old.tmp
/root/work/logs/cache.tmp

-mmin tính tương tự theo phút. Kết quả của -mmin -60 là cùng năm tệp với -mtime -1.

find /root/work -type f -mmin -60
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-newer tìm các tệp sửa đổi sau tệp tham chiếu. Lấy README.md đặt về 3 ngày trước làm tham chiếu thì ra năm tệp tạo sau đó.

find /root/work -type f -newer /root/work/README.md
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-empty tìm cả tệp có kích thước 0 và thư mục trống, cho ra thư mục trống backup và empty.txt.

find /root/work -empty
/root/work/backup
/root/work/empty.txt

4️⃣ Điều kiện -perm và -user của find

  • ↪️ Tìm theo quyền, chủ sở hữu và nhóm điều kiện

Nếu sau -perm chỉ viết số, find tìm tệp có quyền đúng giá trị đó. -perm 644 loại run.sh 755 và my notes.txt 600, cho ra tám tệp.

find /root/work -type f -perm 644
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/report.txt
/root/work/README.md
/root/work/empty.txt

Thêm - trước chế độ sẽ tìm tệp có đủ mọi quyền đã viết. Chỉ run.sh có quyền thực thi của chủ sở hữu (u+x).

find /root/work -type f -perm -u+x
/root/work/run.sh

Thêm / trước chế độ thì chỉ cần có một trong các quyền đã viết. 6000 là tổng của SUID (4000) và SGID (2000), dạng này dùng để kiểm tra trên máy chủ các tệp khi chạy sẽ hoạt động bằng quyền của chủ sở hữu hoặc nhóm.

Thư mục thử nghiệm không có tệp như vậy, nên sau khi gán SUID cho run.sh và chạy thì ra run.sh.

chmod u+s /root/work/run.sh
find /root/work -type f -perm /6000
/root/work/run.sh

Tài liệu cũ ghi -perm +6000 ở cùng vị trí. Chạy nguyên như vậy thì kết thúc với lỗi [invalid mode].

find /root/work -type f -perm +6000
find: invalid mode '+6000'

Dạng + đã bị gỡ trong findutils 4.5.12 (theo trang man), nên hãy viết /. SUID gán để thử nghiệm đã được gỡ bằng chmod u-s.

-user lọc theo tên chủ sở hữu. Mọi tệp thử nghiệm đều thuộc root nên -user root một mình không lọc được gì; thêm -name để chọn tệp .log thì chỉ ra app.log.

find /root/work -type f -user root -name '*.log'
/root/work/logs/app.log

-nouser tìm các tệp có UID chủ sở hữu không khớp tài khoản nào. Dùng để kiểm tra tệp còn lại trên máy chủ sau khi xóa tài khoản; sau khi đổi chủ của guide.txt sang UID 1500 không tồn tại thì ra guide.txt.

chown 1500:1500 /root/work/docs/guide.txt
find /root/work -nouser
/root/work/docs/guide.txt

-nogroup kiểm tra tương tự với nhóm sở hữu, và ra guide.txt có nhóm cũng đổi thành 1500. Sau khi thử nghiệm, chúng tôi khôi phục bằng chown root:root.

Thêm -o giữa các điều kiện thì chỉ cần khớp một. Khi dùng cùng điều kiện khác như -type f, hãy nhóm các điều kiện nối bằng -o trong ngoặc. Đặt dấu gạch chéo ngược trước ngoặc để shell không diễn giải trước, và để khoảng trắng giữa ngoặc và điều kiện.

find /root/work -type f \( -name '*.log' -o -name '*.tmp' \)
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

! đảo điều kiện ngay sau nó. Tìm các tệp không phải .txt ra năm tệp.

find /root/work -type f ! -name '*.txt'
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/README.md
/root/work/run.sh

5️⃣ Sử dụng find -exec

  • ↪️ Khác biệt giữa {} \; và {} +, đổi quyền hàng loạt và kết hợp grep

-exec chạy lệnh viết phía sau cho từng tệp tìm thấy, đường dẫn tìm thấy đi vào vị trí {}. Dấu ; cuối lệnh viết là \; để shell không đọc trước thành dấu phân cách lệnh.

find /root/work -name '*.log' -exec ls -l {} \;
-rw-r--r-- 1 root root 2097152 Oct  5 14:10 /root/work/logs/app.log

Nếu kết thúc bằng + thay vì \;, các đường dẫn được gom lại và lệnh chỉ chạy một lần. So sánh bằng echo, \; in năm đường dẫn trên năm dòng, còn + in trên một dòng.

find /root/work -name '*.txt' -exec echo {} \;
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/report.txt
/root/work/my notes.txt
/root/work/empty.txt
find /root/work -name '*.txt' -exec echo {} +
/root/work/docs/readme.txt /root/work/docs/guide.txt /root/work/report.txt /root/work/my notes.txt /root/work/empty.txt

Với lệnh nhận nhiều đường dẫn như ls, hãy gom bằng + để giảm số lần chạy. Chúng tôi kiểm tra kích thước ba tệp lớn hơn 1k bằng một lần ls -lh.

find /root/work -type f -size +1k -exec ls -lh {} +
-rw-r--r-- 1 root root 4.9K Oct  5 14:10 /root/work/docs/guide.txt
-rw-r--r-- 1 root root 2.0M Oct  5 14:10 /root/work/logs/app.log
-rw-r--r-- 1 root root 1.2K Oct  5 14:10 /root/work/report.txt

-exec cũng dùng để đặt quyền hàng loạt cho thư mục web, 644 cho tệp và 755 cho thư mục. Trước khi chạy, chúng tôi tìm các tệp có giá trị khác và ra run.sh cùng my notes.txt.

find /root/work -type f ! -perm 644
/root/work/run.sh
/root/work/my notes.txt

Tệp và thư mục có quyền khác nhau nên chạy riêng với -type f và -type d. chmod cũng nhận nhiều đường dẫn nên chúng tôi kết thúc bằng +.

find /root/work -type f -exec chmod 644 {} +
find /root/work -type d -exec chmod 755 {} +

Tìm lại với cùng điều kiện không ra gì, và thư mục backup đã đổi sẵn thành 700 cũng thành 755.

Nhưng run.sh cũng thành 644, chạy thì báo [Permission denied]. Trong thư mục có lẫn tệp thực thi, hãy cấp lại quyền thực thi cho các tệp đó bằng chmod +x.

Để chỉ đổi tệp trong thư mục con, hãy thêm -mindepth 2. Chạy với 660 thì chỉ năm tệp trong docs và logs đổi, và sau khi kiểm tra chúng tôi trả về 644.

find /root/work -mindepth 2 -type f -exec chmod 660 {} +
find /root/work -type f -perm 660
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

Nối find với grep sẽ tìm theo nội dung tệp thay vì tên. Để tạo tình huống kiểm tra web shell, chúng tôi tạo bốn tệp PHP trong thư mục riêng /root/site và đặt chuỗi [base64_decode] vào html-cache.php và photo.php trong thư mục upload.

find /root/site -type f
/root/site/lib/func.php
/root/site/upload/html-cache.php
/root/site/upload/photo.php
/root/site/index.php

Nếu biết tên web shell, hãy tìm bằng -name. Thêm -maxdepth 2 để chỉ xuống đến thư mục upload thì chỉ ra html-cache.php.

find /root/site -maxdepth 2 -type f -name 'html*.php'
/root/site/upload/html-cache.php

photo.php đổi sang tên bình thường không hiện ở đây. Chạy grep -l qua -exec chỉ in đường dẫn của tệp chứa chuỗi, và cả hai tệp đều hiện.

find /root/site -name '*.php' -exec grep -l 'base64_decode' {} +
/root/site/upload/html-cache.php
/root/site/upload/photo.php

[base64_decode] là hàm có cả trong tệp lõi WordPress, nên hãy mở kiểm tra nội dung tệp tìm thấy rồi mới xóa.

-print0 đặt ký tự null thay cho xuống dòng giữa các đường dẫn. Ký tự null không hiện trên màn hình nên các đường dẫn dính liền trên một dòng.

find /root/work -name '*.txt' -print0
/root/work/docs/readme.txt/root/work/docs/guide.txt/root/work/report.txt/root/work/my notes.txt/root/work/empty.txt

Khi chuyển tên có dấu cách như my notes.txt sang lệnh khác mà không bị đứt, đầu ra của -print0 được dùng cặp với xargs -0 (theo trang man).

6️⃣ Xóa tệp bằng find và tùy chọn

  • ↪️ -delete và -exec rm

Trước khi xóa, hãy chạy cùng điều kiện mà không xóa và tự kiểm tra danh sách tệp sẽ xóa.

find /root/work -name '*.tmp'
/root/work/docs/old.tmp
/root/work/logs/cache.tmp

-exec rm {} \; chạy rm cho từng tệp tìm thấy. Chạy riêng trong thư mục logs thì cache.tmp bị xóa, chỉ còn app.log.

find /root/work/logs -name '*.tmp' -exec rm {} \;
ls /root/work/logs
app.log

-delete để find tự xóa mà không chạy rm. Khi chạy không in gì, và tìm lại với cùng điều kiện thì không còn tệp .tmp.

find /root/work -name '*.tmp' -delete
find /root/work -name '*.tmp'

-delete phải luôn viết sau điều kiện. find tính dòng lệnh từ đầu như một biểu thức, nên nếu đặt -delete lên đầu, nó sẽ cố xóa mọi thứ dưới đường dẫn bắt đầu trước khi xét điều kiện (theo trang man).

🔲 Tùy chọn của lệnh find

📌 Tùy chọn chính: kết quả chạy trong bài này

Tùy chọnChức năngKết quả trong bài này
-nameTìm tên khớp với mẫu (phân biệt chữ hoa thường)'*.txt' cho năm tệp, 'readme*' chỉ cho docs/readme.txt
-inameSo tên không phân biệt chữ hoa thường'readme*' cho docs/readme.txt và README.md
-type f, -type dChỉ giữ tệp thường (f) hoặc thư mục (d)-type d cho bốn thư mục kể cả đường dẫn bắt đầu, -type f cho mười tệp
-maxdepthChỉ đi xuống N cấp dưới đường dẫn bắt đầu-maxdepth 1 chỉ còn năm tệp ngay dưới /root/work
-mindepthBỏ qua các cấp phía trên N từ đường dẫn bắt đầu-mindepth 2 chỉ cho năm tệp trong thư mục con
-sizeTìm theo kích thước (+ lớn hơn, - nhỏ hơn, đơn vị c, k, M, G)-size +1k cho ba tệp, -size -1k chỉ cho empty.txt
-mtimeSo thời gian từ khi sửa nội dung theo đơn vị 24 giờ-mtime -1 cho năm tệp, -mtime +7 cho hai tệp .tmp
-mminSo thời gian từ khi sửa theo phút-mmin -60 cho cùng năm tệp với -mtime -1
-ctimeSo theo đơn vị 24 giờ đến cả lúc thông tin tệp như quyền và tên thay đổi-ctime -1 cho đủ mười tệp thử nghiệm
-newerTìm những gì sửa sau tệp tham chiếuNăm tệp khi lấy README.md đặt về 3 ngày trước làm tham chiếu
-emptyTìm tệp kích thước 0 và thư mục trốngCho thư mục trống backup và empty.txt
-permTìm theo quyền (chỉ số: đúng giá trị đó, có - phía trước: đủ mọi quyền đã viết, có /: ít nhất một quyền)-perm 644 cho tám tệp, -perm -u+x cho run.sh, sau khi gán SUID thì -perm /6000 cho run.sh
-userLọc theo tên chủ sở hữuCùng -name '*.log' cho app.log, tài khoản không tồn tại kết thúc bằng lỗi
-nouserTìm những gì có UID chủ sở hữu không có tài khoảnCho guide.txt có UID đổi thành 1500
-nogroupTìm những gì có GID nhóm không có nhómCho guide.txt có GID đổi thành 1500
-oGiữ những gì khớp một trong hai (đặt trong ngoặc khi dùng cùng điều kiện khác)Gộp .log và .tmp cho ba tệp
!Đảo điều kiện ngay sau nóCho năm tệp không phải .txt
-execChạy lệnh viết phía sau cho từng tệp tìm thấy (đường dẫn ở vị trí {})Kết thúc bằng + thì một lần echo in năm đường dẫn trên một dòng
-print0Đặt ký tự null thay cho xuống dòng giữa các đường dẫnKý tự null không hiện, đường dẫn dính liền trên một dòng
-deletefind tự xóa các tệp tìm thấy (viết sau điều kiện)Không in gì, tìm lại không còn tệp .tmp

📎 Tùy chọn khác: theo tài liệu hướng dẫn chính thức

Tùy chọnChức năng
-LĐi theo liên kết tượng trưng và dùng thông tin của tệp đích
-pathSo toàn bộ đường dẫn thay vì tên với mẫu shell
-regexSo toàn bộ đường dẫn với biểu thức chính quy
-iregexSo như -regex nhưng không phân biệt chữ hoa thường
-atimeSo thời gian từ lần truy cập cuối theo đơn vị 24 giờ
-cnewerTìm những gì đổi trạng thái sau thời gian sửa của tệp tham chiếu
-groupLọc theo tên nhóm sở hữu
-xdevKhông đi xuống thư mục của hệ thống tệp khác
-daystartTính điều kiện thời gian từ 0 giờ hôm nay thay vì 24 giờ trước
-pruneNếu là thư mục thì không đi xuống
-quitKết thúc ngay (-print -quit chỉ in kết quả đầu tiên)
-printfIn theo định dạng tự đặt
-lsIn tệp tìm thấy theo dạng ls -dils
-fprintLưu đường dẫn tìm thấy vào tệp chỉ định thay vì màn hình
-okChạy như -exec nhưng hỏi trước
-execdirChạy như -exec nhưng chạy lệnh trong thư mục của tệp tìm thấy

🔲 Trình mô phỏng lệnh find

Trình mô phỏng bên dưới là máy chủ ảo chứa cùng thư mục thử nghiệm, nơi bạn có thể tự chạy các điều kiện như -name, -type, -size, -mtime, -perm cùng -exec và -delete.

Trình mô phỏng lệnh findfindutils 4.8
[root@server work]#
Đây là máy chủ ảo chỉ chạy trong trình duyệt, cột bên trái hiện kích thước, thời gian sửa đổi và quyền của từng tệp trong /root/work. Tệp đã xóa bằng -delete hoặc -exec rm có thể khôi phục bằng [Bắt đầu lại].

7️⃣ Lỗi của lệnh find

  • ↪️ paths must precede expression và Permission denied

Nếu viết mẫu không có dấu nháy, shell áp dụng quy tắc Ký tự đại diện và mở rộng trước thành tên tệp trong thư mục hiện tại. Khi chuyển đến thư mục docs và viết *.txt không có dấu nháy, shell đổi thành hai tên guide.txt và readme.txt rồi chuyển đi, nên xuất hiện lỗi bên dưới.

cd /root/work/docs
find /root/work -name *.txt
find: paths must precede expression: `readme.txt'
find: possible unquoted pattern after predicate `-name'?

Mã thoát là 1.

Thiếu \; hoặc + ở cuối -exec thì báo [missing argument to `-exec’].

find /root/work -name '*.log' -exec ls -l {}
find: missing argument to `-exec'

Đường dẫn bắt đầu không tồn tại cho [No such file or directory] và kết thúc với mã thoát 1.

find /nonexistent-dir -name x
find: '/nonexistent-dir': No such file or directory

Tên tài khoản không tồn tại ở -user, hoặc giá trị khác các chữ quy định như f và d ở -type, đều kết thúc ngay bằng lỗi mà không bắt đầu tìm.

find /root/work -user nosuchuser
find: 'nosuchuser' is not the name of a known user
find /root/work -type x
find: Unknown argument to -type: x

Bằng tài khoản thường trên máy chủ Debian 12, chúng tôi đổi quyền của thư mục lock trong thư mục thử nghiệm thành 000 rồi tìm trong thư mục thử nghiệm. Không đọc được bên trong lock nên báo [Permission denied] và mã thoát là 1.

find ~/findtest
/home/user/findtest
/home/user/findtest/report.txt
/home/user/findtest/lock
find: '/home/user/findtest/lock': Permission denied
/home/user/findtest/docs
/home/user/findtest/docs/readme.txt

Để chỉ ẩn các dòng lỗi, hãy thêm 2>/dev/null. Thông báo lỗi biến mất nhưng mã thoát vẫn là 1.

find ~/findtest -name '*.txt' 2>/dev/null
/home/user/findtest/report.txt
/home/user/findtest/docs/readme.txt

🔢 FAQ & nội dung đề xuất

find tự đi xuống dưới đường dẫn bắt đầu mỗi lần chạy. locate tìm tên trong cơ sở dữ liệu do updatedb tạo sẵn, nên các tệp tạo sau lần cập nhật cơ sở dữ liệu cuối sẽ không hiện (theo trang man).

-mtime xét lúc sửa nội dung, còn -ctime xét cả lúc thông tin tệp như quyền và tên thay đổi. Ngay cả README.md được đặt thời gian sửa về 3 ngày trước bằng touch -d cũng ghi nhận việc đó là đổi thông tin, nên -ctime -1 hiện đủ mười tệp thử nghiệm.

ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Prove your humanity: 6   +   2   =