tôi đã đối mặt với một vấn đề như thế này ...
Trên thực tế, theo hai cách bạn có thể xử lý find
đầu ra copy
lệnh trong lệnh
Nếu find
đầu ra của lệnh không chứa bất kỳ khoảng trắng nào, tức là nếu tên tệp không chứa khoảng trống trong đó thì bạn có thể sử dụng lệnh được đề cập bên dưới:
Cú pháp: find <Path> <Conditions> | xargs cp -t <copy file path>
Thí dụ: find -mtime -1 -type f | xargs cp -t inner/
Nhưng hầu hết thời gian các tệp dữ liệu sản xuất của chúng tôi có thể chứa không gian trong đó. Vì vậy, hầu hết thời gian dưới đây lệnh được đề cập là an toàn hơn:
Cú pháp: find <path> <condition> -exec cp '{}' <copy path> \;
Thí dụ find -mtime -1 -type f -exec cp '{}' inner/ \;
Trong ví dụ thứ hai, phần cuối tức là dấu chấm phẩy cũng được coi là một phần của find
lệnh, cần được thoát trước khi nhấn nút enter. Nếu không, bạn sẽ gặp lỗi như thế này
find: missing argument to `-exec'
Trong trường hợp của bạn, sao chép cú pháp lệnh sai để sao chép tệp tìm vào /home/shantanu/tosend
. Lệnh sau sẽ hoạt động:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;
\;
gì?