Nếu tôi có một thư mục chứa một số tệp có tên có khoảng trắng, vd
$ ls -1 dir1
file 1
file 2
file 3
Tôi có thể sao chép thành công tất cả chúng vào một thư mục khác như thế này:
$ find dir1 -mindepth 1 -exec cp -t dir2 {} +
Tuy nhiên, đầu ra của find dir1 -mindepth 1
không gian không thoát:
$ find dir1 mindepth 1
dir1/file 1
dir1/file 3
dir1/file 3
Nếu tôi sử dụng print0
thay vì print
, đầu ra vẫn chứa các khoảng trắng chưa thoát:
$ find dir1 mindepth 1 -print0
dir1/file 1dir1/file 2dir1/file 3
Để sao chép các tệp này theo cách thủ công bằng cách sử dụng cp
, tôi sẽ cần phải thoát khoảng trắng; nhưng có vẻ như điều này là không cần thiết khi cp
các bản sao xuất phát find
, bất kể tôi sử dụng +
hay \;
ở cuối lệnh.
Lý do cho điều này là gì?
find..exec
có thể tự xử lý tên tập tin kỳ lạ ..