나는 몇 년 동안 스크립팅 작업을 하지 않았으므로 아래에서 도움을 줄 수 있는 사람이 있는지 궁금합니다.
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
나는 다음을 원합니다 :
- 사진을 다운로드한 기본 폴더 내의 모든 디렉토리를 검색하고,
- mov, mp4, mpeg, mpg, avi, m4v 및 wmv와 같은 모든 비디오 파일을 삭제합니다.(때때로 파일 확장자가 대문자인 경우도 있습니다.)
- 사진의 경우 대부분의 파일 이름이 중복되어 있음을 알 수 있습니다(하나는 "modifié"라는 단어가 없고 다른 하나는 "modifié"라는 단어가 있음). 모든 파일에 IMG-20180601-WA0020.jpg와 같은 "수정된" 버전이 있는 것은 아닙니다. 원본 파일에 "modifié" 버전이 없는 경우를 제외하고 파일 이름에 "modifié"라는 단어가 포함되지 않은 모든 사진을 삭제하고 보관하고 싶습니다.(IMG-20180601-WA0020.jpg는 유지되는 예시입니다).
- 비디오 파일과 관련이 없는 경우 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를 제거하세요 .