Answers:
您的原始命令可以重写为:
find . -type f -exec bash -c 'test -e /target-directory/"$1" || cp "$1" /target-directory' sh {} \;
这里的关键是我们使用特定命令调用shell,并将找到的文件作为$1
参数传递。如果test -e /target-directory/"$1"
失败,则表示文件不存在,在这种情况下cp
将复制文件。
通常,只要该命令可以验证文件的存在,就可以使用其他命令。其他一些替代方法:
/usr/bin/realpath -e /target-directory/"$1" > /dev/null || cp "$1" /target-directory
stat >/dev/null /target-directory/"$1" || cp "$1" /target-directory/"$1"
stat
要在Bash中测试文件是否存在?会不会test -e
简单得多?