Để tìm tên tập tin không chứa chuỗi "error" trong thư mục logs, câu lệnh nào là phù hợp?
Trả lời:
Đáp án đúng: A
Phân tích câu hỏi:
Câu hỏi yêu cầu tìm các tập tin trong thư mục logs
mà không chứa chuỗi error
.
Phân tích các lựa chọn:
- A. grep -L 'error' logs/*: Lệnh này sử dụng tùy chọn
-L
củagrep
, có nghĩa là in ra tên của các tập tin không chứa chuỗi tìm kiếm (trong trường hợp này là 'error').logs/*
chỉ định tất cả các tập tin trong thư mụclogs
. Đây là một lựa chọn đúng. - B. grep -lv 'error' logs/*: Lệnh này sử dụng cả hai tùy chọn
-l
và-v
.-l
in ra tên của các tập tin chứa chuỗi tìm kiếm, và-v
đảo ngược kết quả tìm kiếm (in ra các dòng không chứa chuỗi tìm kiếm). Khi kết hợp cả hai, nó sẽ in ra tên của các file mà mỗi file có ít nhất một dòng không chứa 'error'. Cách này không hoàn toàn đúng vì nó vẫn in ra các file mà có một số dòng chứa 'error'. - C. find logs/ -type f | xargs grep -L 'error': Lệnh này sử dụng
find
để tìm tất cả các tập tin thông thường (-type f
) trong thư mụclogs
, sau đó chuyển danh sách các tập tin này chogrep -L
thông quaxargs
. Tương tự như lựa chọn A, lệnh này cũng in ra tên của các tập tin không chứa chuỗi 'error'. Tuy nhiên, cách này phức tạp hơn và không cần thiết vì có thể dùng trực tiếpgrep -L 'error' logs/*
. Mặc dù cho ra kết quả tương tự, nhưng lựa chọn A tối ưu hơn. - D. ls logs/ | grep -v 'error': Lệnh này liệt kê tất cả các mục (tập tin và thư mục) trong thư mục
logs
, sau đó sử dụnggrep -v 'error'
để lọc ra các mục có tên không chứa chuỗi 'error'. Lệnh này chỉ lọc tên của các mục, chứ không kiểm tra nội dung của các tập tin. Vì vậy, nếu có một tập tin tên làabc.log
chứa chuỗierror
thì nó vẫn sẽ được hiển thị.
Kết luận:
Lựa chọn A là cách đơn giản và hiệu quả nhất để tìm các tập tin không chứa chuỗi "error" trong thư mục logs. Mặc dù C cũng có thể cho ra kết quả tương tự, nhưng A trực quan và ngắn gọn hơn.