Tôi đang làm việc với một tập lệnh sẽ sao chép các tệp CHỈ đã được tạo trong ngày cuối cùng vào một thư mục khác. Vấn đề tôi gặp phải là tập lệnh tôi có các bản sao tất cả các tệp trong thư mục nguồn thay vì chỉ các tệp chưa đầy một ngày.
Đây là những gì tôi có:
find . -mtime -1 -exec cp --preserve --parents -a "{}" /somefolder \;
Đoạn mã trên sao chép tất cả các tệp trong thư mục nguồn. Nếu tôi xóa tất cả các đối số cho 'cp' thì nó hoạt động:
find . -mtime -1 -exec cp "{}" /somefolder \;
Đoạn mã trên chỉ sao chép các tệp mới nhất mà tôi muốn nhưng tôi cần giữ nguyên các thuộc tính bằng cách sử dụng các đối số cp.
Tôi cũng đã thử các biến và cho các vòng lặp nghĩ rằng có lẽ tùy chọn -exec là vấn đề:
files="$(find -mtime -1)"
for file in "$files"
do
cp --parents --preserve -a file /somefolder
Tuy nhiên, ở trên cho kết quả vòng lặp trong cùng một vấn đề, tất cả các tệp được sao chép. Nếu tôi lặp lại các tệp $ chỉ các tệp tôi cần được hiển thị.
Làm thế nào tôi có thể làm điều này để làm việc?
find /sourcefolder -type f -mtime -1 -exec cp -a "{}" /somefolder \;