Sử dụng prename(bí danh cho renamenhiều hệ thống) có thể thực hiện việc này mà không cần chạy nhiều lần mvhoặc cp:
cd /home/user
find . -type f -name 'Loads.bdf' -exec \
prename -n 's:^./::; s:/:_:g; s:^:destination/:' {} +
Xóa -nkhi bạn chắc chắn điều này đang di chuyển các tệp bạn muốn.
Cập nhật
Để sao chép các tệp thay vì di chuyển chúng, cách nhanh nhất là sao chép trước bằng cpiohoặc paxsau đó đổi tên như trước. Ví dụ: (với GNU cpio):
cd /home/user
find . -type f -name 'Loads.bdf | cpio -p --make-directories destination
cd destination
find . -type f -name 'Loads.bdf' -exec prename -n 's:^./::; s:/:_:g' {} +
Lưu ý rằng mặc dù paxlà cả POSIX và LSB và cpiokhông còn là POSIX, cpionhưng đây vẫn là chương trình thường được tìm thấy ở nhiều hệ thống.
Để xử lý tên tập tin với dòng mới với GNU find/ cpiongười ta có thể thêm -print0vào findvà -0để cpio.
Cập nhật 2
Các paxgiải pháp là một lớp lót (không bao gồm cd):
cd /home/user
find . -name 'Loads.bdf' | cut -d/ -f 2- | pax -rws ':/:_:g' destination
Hoặc cho bất kỳ tên tệp (và GNU find):
find /home/user -name 'Loads.bdf' -printf '%P\0' | pax -0rws ':/:_:g' destination