mv, 존재하는 경우 이름 바꾸기 이름을 변경

하나의 디렉토리에 많은 이미지를 모아야합니다. 이러한 이미지의 대부분은 파일 이름이 동일합니다.

일부 안전한 버전이 mv대상 파일 이름이 이미 그렇게 존재하는 경우 자동으로 파일의 이름을 변경 것 pic1.jpeg같은 것을하게는 pic1_2.jpeg?

나는 내 자신의 파이썬 스크립트를 작성할 수 있지만 내가 할 수 있도록 이와 같은 것이 있어야합니다.

find . -type f -name *.jpg -exec mvsafe '{}' /targetpath/ \;



답변

mv는 이미 이것을 최소한 데비안에서 지원합니다.

mv --backup=t <source_file> <dest_file>

mv (1) 맨 페이지에서 볼 수 있듯이

--backup[=CONTROL]
         make a backup of each existing destination file

The  backup  suffix  is  `~',  unless  set  with   --suffix   or   SIM‐
PLE_BACKUP_SUFFIX.   The version control method may be selected via the
--backup option or through the  VERSION_CONTROL  environment  variable.

--backup=t“숫자 백업 만들기” 를 의미 하려면 다음과 같이 호출하십시오.

env VERSION_CONTROL=numbered mv --backup=t <source_file> <dest_file>

(dest_file은 물론 디렉토리 일 수 있습니다).

편집 : 이후 버전 (최소한 GNU coreutils 8.22이지만 이미 훨씬 이전 버전)에서는 간단히 작성할 수 있습니다.

mv --backup=numbered <source_file> <dest_file>


답변