파일을 다른 디렉터리로 이동하고 동일한 파일이 이미 존재하는 경우 디렉터리의 일부 파일 이름에 없는 임의의 문자열을 생성하고 파일 이름을 해당 임의의 문자열로 바꾸는 명령을 구성할 수 있습니까?
나는 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~" 백업파일만 보관됩니다.