ファイルを別のディレクトリに移動し、同じファイルがすでに存在する場合は、ディレクトリの一部のファイル名にないランダムな文字列を生成し、ファイル名をそのランダムな文字列に置き換えるコマンドを設定できますか?
私はmv -i
コマンドを知っているので、手動でコマンドを実行し、その中に含まれるファイルの名前を別の名前に変更します。
ありがとう
答え1
mv -b file destination/
これで問題が解決します。
mv --backup=TYPE
次のいずれかに該当するタイプを実行します。
none, off never make backups (even if --backup is given)
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
答え2
標準または普遍的なシングルステップコマンドはありません。これは非標準ですが、一般的な方法を使用する2段階のプロセスです。mktemp
。
tmp=$(TMPDIR=$(dirname -- "$destination") mktemp -t)
mv -- "$source" "$tmp"
echo n | mv -i -- "$tmp" "$destination"
答え3
$ mv -fv --backup=simple file1.txt archive/
‘file1.txt’ -> ‘archive/file1.txt’ (backup: ‘archive/file1.txt~’)
$ ll archive/
-rw-r--r-- 1 root root 8 Dec 10 11:06 file1.txt
-rw-r--r-- 1 root root 10 Dec 10 11:05 file1.txt~
上記のmvは、file1.txtをarchive/ディレクトリに移動し、既存のarchive/file1.txtの名前をfile1.txt〜に変更することで、ファイル名の競合を防ぎます。もう一度実行すると、"archive/file1.txt~" バックアップファイルのみ保持されます。