たとえば、ごみ箱フォルダーを作成し、そのフォルダーが~/dustbin/File01
既に存在する場合、新しいファイルを同じ名前のフォルダーにコピーするにはどうすればよいでしょうか?
例えば:
cp ~/test/File01 ~/dustbin/File01
ただし、おそらく(コピー)を最後に追加します
Unixファイルシステムでは、同じフォルダに同じ名前の2つのファイルを含めることはできません(参考までに、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