JavaScript is required

Lệnh nào sau đây được dùng để tìm các tập tin được sửa đổi trong vòng 7 ngày qua và sao lưu chúng vào một thư mục backup?

A.

find . -mtime -7 -exec cp {} backup/ ;

B.

ls -lt | head -7 | xargs -I {} cp {} backup/

C.

find . -type f -mtime -7 | xargs cp -t backup/

D.

for file in $(find . -mtime -7); do cp $file backup/; done

Trả lời:

Đáp án đúng: C


Câu hỏi yêu cầu tìm các tập tin đã được sửa đổi trong vòng 7 ngày qua và sao lưu chúng vào thư mục backup. Chúng ta cần tìm lệnh nào thực hiện đúng cả hai thao tác này.

Phương án A: find . -mtime -7 -exec cp {} backup/ ;

  • find . -mtime -7: Tìm các tập tin được sửa đổi trong vòng 7 ngày qua (mtime -7 nghĩa là nhỏ hơn 7 ngày).
  • -exec cp {} backup/ ;: Thực thi lệnh cp cho mỗi tập tin tìm thấy, sao chép vào thư mục backup/.

Phương án này có vẻ đúng.

Phương án B: ls -lt | head -7 | xargs -I {} cp {} backup/

  • ls -lt: Liệt kê các tập tin và thư mục được sắp xếp theo thời gian sửa đổi mới nhất.
  • head -7: Lấy 7 dòng đầu tiên (7 tập tin hoặc thư mục được sửa đổi gần đây nhất).
  • xargs -I {} cp {} backup/: Sao chép các tập tin đã lọc vào thư mục backup/.

Phương án này không chính xác vì nó chỉ lấy 7 tập tin/thư mục được sửa đổi gần đây nhất, không phải tất cả các tập tin được sửa đổi trong 7 ngày qua.

Phương án C: find . -type f -mtime -7 | xargs cp -t backup/

  • find . -type f -mtime -7: Tìm các tập tin (-type f) được sửa đổi trong vòng 7 ngày qua.
  • xargs cp -t backup/: Chuyển danh sách các tập tin tìm được cho lệnh cp để sao chép vào thư mục backup/. Option -t chỉ định thư mục đích.

Phương án này có vẻ đúng.

Phương án D: for file in $(find . -mtime -7); do cp $file backup/; done

  • find . -mtime -7: Tìm các tập tin được sửa đổi trong vòng 7 ngày qua.
  • for file in ...; do cp $file backup/; done: Duyệt qua từng tập tin tìm được và sao chép nó vào thư mục backup/.

Phương án này cũng có vẻ đúng.

Tuy nhiên, phương án C sử dụng xargs cp -t backup/ là cách hiệu quả hơn để xử lý nhiều tập tin đầu vào, đặc biệt khi số lượng tập tin lớn. Phương án A dùng -exec thực thi cp cho mỗi file sẽ chậm hơn. Phương án D cũng tương tự phương án A nhưng có thêm bước lặp bằng vòng for.

Vậy, phương án C là tối ưu nhất.

Câu hỏi liên quan