Lệnh ban đầu của bạn có thể được viết lại thành:
find . -type f -exec bash -c 'test -e /target-directory/"$1" || cp "$1" /target-directory' sh {} \;
Chìa khóa ở đây là chúng ta gọi shell với các lệnh cụ thể và truyền tệp tìm thấy làm $1
đối số. Nếu test -e /target-directory/"$1"
thất bại, điều đó có nghĩa là tệp không tồn tại, trong trường hợp đó cp
sẽ sao chép tệp.
Nói chung, người ta có thể sử dụng các lệnh khác, miễn là lệnh có thể xác minh sự tồn tại của một tệp. Một số lựa chọn thay thế khác:
/usr/bin/realpath -e /target-directory/"$1" > /dev/null || cp "$1" /target-directory
stat >/dev/null /target-directory/"$1" || cp "$1" /target-directory/"$1"