mycp () {
local source="$1"
local target="$2"
local n
# If the target pathname is a directory, add the source filename
# the end of it.
if [ -d "$target" ]; then
target+="/$(basename "$source")"
fi
# Increment n until a free name is found
# (this may leave n unset if the source filename is free).
while [ -e "$target$n" ]; do
n=$(( n + 1 ))
done
cp "$source" "$target$n"
}
您可以滚动自己的功能。这将继续添加下划线,直到没有重复:
与传递参数不兼容(例如
cp -p
)。更好的选择是使用cp -n
,它不会覆盖现有文件。如果名称已被使用,则向目标名称添加一个正整数,并增加该整数直到找到一个空闲名称:
注意:此函数除了源路径名和目标路径名外,不接受任何其他参数。它还假设您正在使用
bash
shell。要“安装”它,只需在你的 shell 中运行上面的代码,或者将它添加到你通常添加别名和函数的任何地方。
测试: