例如,如果我创建了一个垃圾箱文件夹并且它~/dustbin/File01
已经在其中,我如何将一个新文件复制到同名文件夹中?
例如:
cp ~/test/File01 ~/dustbin/File01
但是可能会在它的末尾添加(复制)
Unix 文件系统不允许在同一个文件夹中有两个同名的文件(作为参考,VMS 确实允许这样做)。
您可以使用cat
附加:
cat ~/test/File01 >> ~/dustbin/File01
这会在文件不存在或附加到现有文件时创建文件。
该cp
命令还提供了进行备份的选项,因此它不会覆盖现有文件。请参阅该--backup
选项。
我想你在问如何检测一个文件是否已经存在,然后重命名新文件,这样它就不会被覆盖。在这种情况下:
if [[ -f "$HOME/dustbin/File01" ]]; then
cp "$HOME/test/File01" "$HOME/dustbin/File01 (Copy)"
else
cp "$HOME/test/File01" "$HOME/dustbin/File01"
fi
就是你所要求的。您可以更一般地执行此操作:
if [[ -f "$dest" ]]; then
cp "$source" "${dest%/*}/${dest##*/} (Copy)"
else
cp "$source" "$dest"
fi
但是,如果您不小心使用它,您的文件名中有“(复制)(复制)(复制)(复制)......”的风险。
dd if=~/test/File01 >> ~/dustbin/File01