패턴과 일치하는 파일 삭제 숫자가 적어도 두 번 오는 모든 하위

파일 이름에 숫자가 있고 ‘x’와 숫자가 적어도 두 번 오는 모든 하위 디렉토리의 모든 파일을 재귀 적으로 제거해야합니다.

예:

이 파일들을 제거하고 싶습니다 :

'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'

그러나 이러한 파일을 제거하고 싶지 않습니다.

'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'

bash 쉘에서 어떻게 할 수 있습니까?



답변

문자열 x에 숫자와 뒤에 숫자가 포함 된 경우에만 ( x즉, 패턴과 일치하는 하위 문자열이 포함 된 경우) “숫자 뒤에 숫자”가 포함 [0-9]x[0-9]됩니다. 따라서 이름이 pattern과 일치하는 파일을 제거하려고합니다 *[0-9]x[0-9]*[0-9]x[0-9]*.jpg.

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete

find이없는 경우 -delete전화 rm를 걸어 파일을 삭제하십시오.

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +


답변

올바른 명령은 다음과 같습니다.

find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'

이름이 ‘aaa-12×12.jpg’인 파일 만 가져오고 ‘aaa-12x12red.jpg’는 가져 오지 않습니다.


답변