같은 이름의 파일 삭제

같은 이름의 파일 삭제

나는 몇 년 동안 스크립팅 작업을 하지 않았으므로 아래에서 도움을 줄 수 있는 사람이 있는지 궁금합니다.

Google 포토에서 Amazon 포토(사진 약 40,000장)로 이전하려고 합니다. 다음은 Google에서 다운로드한 예입니다.

IMG-20180601-WA0004-modifié.jpg
IMG-20180601-WA0004.jpg
IMG-20180601-WA0004.jpg.json
IMG-20180601-WA0005-modifié.jpg
IMG-20180601-WA0005.jpg
IMG-20180601-WA0005.jpg.json
IMG-20180601-WA0008-modifié.jpg
IMG-20180601-WA0008.jpg
IMG-20180601-WA0008.jpg.json
IMG-20180601-WA0009-modifié.jpg
IMG-20180601-WA0009.jpg
IMG-20180601-WA0009.jpg.json
IMG-20180601-WA0010-modifié.jpg
IMG-20180601-WA0010.jpg
IMG-20180601-WA0010.jpg.json
IMG-20180601-WA0011-modifié.jpg
IMG-20180601-WA0011.jpg
IMG-20180601-WA0011.jpg.json
IMG-20180601-WA0013-modifié.jpg
IMG-20180601-WA0013.jpg
IMG-20180601-WA0013.jpg.json
IMG-20180601-WA0014-modifié.jpg
IMG-20180601-WA0014.jpg
IMG-20180601-WA0014.jpg.json
IMG-20180601-WA0015-modifié.jpg
IMG-20180601-WA0015.jpg
IMG-20180601-WA0015.jpg.json
IMG-20180601-WA0020.jpg
IMG-20180601-WA0020.jpg.json
IMG-20180601-WA0036-modifié.jpg
IMG-20180601-WA0036.jpg
IMG-20180601-WA0036.jpg.json
VID-20180601-WA0012.mp4.json
VID_20180601_195857.mp4.json
métadonnées.json

나는 다음을 원합니다 :

  1. 사진을 다운로드한 기본 폴더 내의 모든 디렉토리를 검색하고,
  2. mov, mp4, mpeg, mpg, avi, m4v 및 wmv와 같은 모든 비디오 파일을 삭제합니다.(때때로 파일 확장자가 대문자인 경우도 있습니다.)
  3. 사진의 경우 대부분의 파일 이름이 중복되어 있음을 알 수 있습니다(하나는 "modifié"라는 단어가 없고 다른 하나는 "modifié"라는 단어가 있음). 모든 파일에 IMG-20180601-WA0020.jpg와 같은 "수정된" 버전이 있는 것은 아닙니다. 원본 파일에 "modifié" 버전이 없는 경우를 제외하고 파일 이름에 "modifié"라는 단어가 포함되지 않은 모든 사진을 삭제하고 보관하고 싶습니다.(IMG-20180601-WA0020.jpg는 유지되는 예시입니다).
  4. 비디오 파일과 관련이 없는 경우 json 파일을 유지하고, 그렇지 않으면 삭제하는 것을 선호합니다.

답변1

모든 비디오 파일을 삭제하는 방법은 다음과 같습니다.

find . -type f \( -iname '*.mp4' -o -iname '*.mp4.json' \) -delete

-o -iname '*.suffix'필요한 다른 접미사에 대해 더 많은 부분을 추가하십시오.


수정을 위해 원본 이미지를 제거하려면 다음과 같은 명령을 실행하십시오.

find . -name '*-modifié.jpg' -exec sh -c 'rm -f $(echo "$1" | sed s/-modifié//)' _ {} \;

수정되지 않은 버전이 있는 모든 파일을 찾아 -modifié수정되지 않은 버전을 삭제합니다( rm -f수정되지 않은 버전이 없으면 오류 메시지가 표시되지 않음).

추신: 문제가 발생할 경우를 대비하여 이 명령을 수정/실행하기 전에 백업을 수행하는 것이 좋습니다.

답변2

그리고 zsh:

zmodload zsh/files # for a builtin rm to avoid the "too many args" limit
                   # of the system one

set -o nocaseglob

echo rm -f -- **/*.(mp4|mpeg|mpg|mov|wmv|avi|m4v)(|.json)(N.)

echo rm -f -- **/*-modifié.jpg(N.e['reply=( ${REPLY%-*}.jpg(|.json)(N.) )'])

echo실제로 이 작업을 수행하려면 s를 제거하세요 .

관련 정보