Vì vậy, bạn muốn sao chép tất cả các .html
tệp trong một số thư mục nguồn và thư mục con của nó, tất cả vào một thư mục duy nhất (tức là thu gọn hệ thống phân cấp)?
Tiêu chuẩn POSIX :
find myDir -name '*.html' -type f -exec sh -c 'cp "$@" "$0"' ~/otherDir {} +
Lưu ý rằng ~/otherDir
trở thành tham số 0 cho trình bao trung gian, cho phép các tệp nguồn chính xác "$@"
. Rời khỏi thư mục đích bên ngoài shell có lợi thế bổ sung mà bạn sẽ không gặp phải khi trích dẫn các vấn đề nếu đó là một biến trong tập lệnh shell cha ( -exec sh -c 'cp "$@" "$0"' "$target"
).
Đối với các hệ thống cũ không có find … -exec … +
:
find myDir -name '*.html' -type f -exec cp {} ~/otherDir \;
Tôi vỏ của bạn là bash ≥4 hoặc zsh:
shopt -s globstar # only for bash, put it in your `.bashrc`
cp myDir/**/*.html ~/otherDir/