移動および名前変更可能

移動および名前変更可能

ファイルを別のディレクトリに移動し、同じファイルがすでに存在する場合は、ディレクトリの一部のファイル名にないランダムな文字列を生成し、ファイル名をそのランダムな文字列に置き換えるコマンドを設定できますか?

私は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~" バックアップファイルのみ保持されます。

関連情報