원본 이미지는 img.jpg입니다.
img.jpg1, img.jpg2, img.jpg3과 같은 중복 이미지를 제거하려면 어떻게 해야 합니까? .jpg 확장자를 가진 이미지를 유지하고 싶습니다.
감사해요
답변1
답변2
명령을 및 플래그 find
와 결합합니다 . 이 특정 예에서는 모든 복제 이미지를 가져와 휴지통으로 옮기므로 원하는 경우 여전히 이미지를 복구할 수 있습니다. 나중에 명령을 사용하거나 GUI를 통해 휴지통을 정리할 수 있습니다.-regex
-exec
-exec
rm
testerdir:$ ls
img.jpg img.jpg1 img.jpg2 img.jpg3
testerdir:$ find . -regex ".*\.jpg[1-9]+" -print -exec mv -t $HOME/.local/share/Trash/ {} +
./img.jpg1
./img.jpg3
./img.jpg2
testerdir:$ ls $HOME/.local/share/Trash
expunged/ files/ img.jpg1 img.jpg2 img.jpg3 info/
testerdir:$ ls
img.jpg
답변3
bash
비재귀적으로 사용 :
shopt -s extglob nullglob
rm img.jpg+(?)
끝에 숫자만 있는 경우:
rm img.jpg+([0-9])
재귀적으로:
shopt -s globstar extglob nullglob
rm **/img.jpg+(?)
끝에 숫자만 있는 경우:
rm **/img.jpg+([0-9])
여기서는 몇 가지 셸 옵션을 사용했습니다.
extglob
확장된 glob 패턴을 일치시킬 수 있습니다. 예를 들어+(?)
하나 이상의 문자 발생과 일치합니다. 이는 기본적으로 대화형 셸에서 활성화되어야 합니다.nullglob
일치하는 항목이 없으면 null 문자열이 반환됩니다.globstar
다음을 사용하여 재귀적으로 검색할 수 있습니다.**