mvコマンドではゴミ箱(.Trash)に同名フォルダがあると移動できませんでした。
シェルスクリプトで、同名フォルダの存在を確認して、タイムスタンプを付加するようにしました。
1. mvコマンドでは同名フォルダがあると移動できない
シェルスクリプトで、コピー済みのフォルダをゴミ箱に移動していたら、うまく移動できていないことに気づきました。

Directory not empty
このエラーは、mvコマンドでフォルダ(ディレクトリ)を移動する際に、移動先にも同じフォルダが存在する場合に表示されます。
mvコマンドでは、同名フォルダが重複しても、勝手に統合してくれるわけではありません。
2. Finderの「削除」では添字が付加されていた
しかし、ふだんの「削除」、つまり Finder でフォルダを削除するときには、同じ名前を気にする必要はありません。
実は、Finderでは、削除でも、ゴミ箱への移動でも、ファイル名が重複した場合には、後ろに添え字が追加されています。

つまり、自動的にフォルダ名の重複を防いでくれているんですね。
ファイル名重複を避ける処理を追加する必要があるわけです。
3. macにはmvコマンドのオプションbackupがない
mvのGNU coreutils 9.1のマニュアル(mv invocation (GNU Coreutils 9.1))を見ると、backupとsuffixのオプションがあります。
例えば、このようにタイムスタンプを元に、バックアップをすることができます。
mv --backup --suffix=.$(date +%Y%m%d_%H%M%S) 移動元 移動先
ところが、macosのターミナルでは、無効なオプションになってしまいます。

macのターミナルでman mvを表示すると、オプションが少ないのです。

4. スクリプトで同名ファイルの存在確認とタイムスタンプ
そうなると、自分でバックアップのスクリプトを組む必要があります。
このシェルスクリプトでは、$SRCにカレントディレクトリを移動して、内部のファイルをゴミ箱に移動しています。
もし、すでに同名ファイルがある場合は、タイムスタンプを追加してリネームしています。
DST=~/.Trash
cd $SRC
for file in *; do
newfile="$DST"/$file
while [ -e $newfile ]; do
newfile="$DST"/${file##*/}`date "+%Y-%m-%d-%H%M%S"`
done
mv -v "$file" "$newfile"
done
フォルダ「a」を作成して何度もゴミ箱に移動したら、ちゃんとタイムスタンプが追加できました。

こちらもどうぞ。
![[mac] コマンドラインからゴミ箱に入れる【~/.Trash】](https://chiilabo.com/wp-content/uploads/2022/04/image-11-1024x576.png)

![[Mac] 移動先に同名のフォルダがある場合の置き換えと統合の注意点 【Windowsとの違い】 dittoコマンド](https://chiilabo.com/wp-content/uploads/2020/06/スクリーンショット-2020-06-12-17.35.04-1024x572.png)