0

例如,如果我创建了一个垃圾箱文件夹并且它~/dustbin/File01已经在其中,我如何将一个新文件复制到同名文件夹中?

例如:

cp ~/test/File01 ~/dustbin/File01

但是可能会在它的末尾添加(复制)

4

3 回答 3

2

Unix 文件系统不允许在同一个文件夹中有两个同名的文件(作为参考,VMS 确实允许这样做)。

您可以使用cat附加:

cat ~/test/File01 >> ~/dustbin/File01

这会在文件不存在或附加到现有文件时创建文件。

cp命令还提供了进行备份的选项,因此它不会覆盖现有文件。请参阅该--backup选项。

于 2012-11-27T12:51:30.663 回答
1

我想你在问如何检测一个文件是否已经存在,然后重命名新文件,这样它就不会被覆盖。在这种情况下:

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

但是,如果您不小心使用它,您的文件名中有“(复制)(复制)(复制)(复制)......”的风险。

于 2012-11-27T12:55:00.833 回答
0

dd if=~/test/File01 >> ~/dustbin/File01

于 2012-11-27T12:50:39.807 回答