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


26

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

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

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

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

답변:


38

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>

1
놀랍도록 깨끗한 ​​솔루션을 위해 +1. BTW 옵션은 RHEL 6에도 있습니다.
Paweł Brodacki

멋진 기능이지만 확장명 뒤에 접미사를 추가하므로 내 경우에는별로 도움이되지 않으므로 파일 이름은 .jpg ~ 1 ~으로 끝나고 _1.jpg라는 이름이 필요합니다. 파일을 이동 한 후 mmv를 사용하여 파일 이름을 바꿀 것입니다.
theduke

4
이 수행 한 후 내 원하는 결과를 달성 할 MMV 명령입니다 MV --backup = 번호 : MMV -v " . "# 1_ # 3 # 2 "~ * ~."
theduke

내 데비안 시스템 (mmv 1.01b-18)에서 올바른 mmv 명령은 다음과 같습니다.mmv -v "*.*~*~" "#1_#3.#2"
Xavier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.