둘러보기를 사용할 수 있으면 허용되는 답변이 좋습니다. 그러나이 문제를 해결하는 또 다른 방법도 있습니다.
이 질문에 대해 널리 제안 된 정규식을 보면 :
.*[^a]$
우리는 그것이 거의 효과 가 있음을 알게 될 것입니다 . 빈 문자열을 허용하지 않으므로 약간 불편할 수 있습니다. 그러나 이것은 한 문자 만 처리 할 때 사소한 문제입니다. 그러나 "abc"와 같이 전체 문자열을 제외하려면 다음을 수행하십시오.
.*[^a][^b][^c]$
하지 않습니다. 예를 들어 ac를 허용하지 않습니다.
이 문제에 대한 쉬운 해결책이 있습니다. 우리는 간단히 말할 수 있습니다.
.{,2}$|.*[^a][^b][^c]$
또는보다 일반화 된 버전 :
.{,n-1}$|.*[^firstchar][^secondchar]$
여기서 n은 (대한 금지하고자하는 문자열의 길이 abc
는 3입니다), 그리고 firstchar
, secondchar
... 처음입니다, 당신의 문자열의 두 번째 ... n 번째 문자 (위해 abc
가 될 것입니다 a
, 다음 b
, 다음 c
).
이것은 우리가 금지하지 않은 텍스트보다 짧은 문자열이 정의에 의해이 텍스트를 포함 할 수 없다는 간단한 관찰에서 비롯됩니다. 따라서 더 짧은 것 ( "ab"는 "abc"가 아님)이나 끝이 없어도 받아 들일 수있을만큼 긴 것을 받아 들일 수 있습니다.
.jpg가 아닌 모든 파일을 삭제하는 find 예제는 다음과 같습니다.
find . -regex '.{,3}$|.*[^.][^j][^p][^g]$' -delete