(점)을 포함하지만 끝나지 않는 항목을 찾습니다.

(점)을 포함하지만 끝나지 않는 항목을 찾습니다.

폴더 이름에 .가 포함된 모든 파일을 찾는 방법은 무엇입니까? 다음을 시도했지만 원하는 폴더가 아닌 모든 폴더가 나열되었습니다. 찾다. -최대 깊이 2 -typed -ipath "."

이런 이름의 폴더가 많이 있는 것 같습니다. Brain.Dead.1990.1080p.BluRay.x264-HD4U[rarbg]제 눈에는 정말 보기 흉합니다. 나는 그것들을 나열하고 그 이름을 더 읽기 쉬운 이름으로 편집하고 싶습니다. 어떤 단서가 있나요?

답변1

정규 표현식이 없는 또 다른 발견

find . -maxdepth 2 -type d -name '*.*' ! -name '.*'

답변2

find . -maxdepth 2 -type d -name '*.*'

..이름에 , 및 가 포함된 ./user/.config모든 디렉터리를 보고합니다../.foo.d./.foo/bar.baz

find . -maxdepth 2 -type d -name '?*.*'

..foo.d첫 번째 문자 뒤의 부분을 검색하므로 에서는 일치 하지만 .config또는 에서는 일치하지 않습니다 ..

find . -maxdepth 2 -type d -name '[!.]*.*'

숨겨진 디렉토리(이름이 로 시작하는 디렉토리 .)는 생략되지만, 숨겨진 디렉토리가 아닌 디렉토리는 여전히 숨겨진 디렉토리 내에서 발견됩니다 ./.foo/foo.bar.

find . -maxdepth 2 -name '.?*' -prune -o -type d -name '?*.*' -print

숨겨진 디렉터리는 탐색되거나 보고되지 않습니다.

표준이 아닌 유일한 부분은 -maxdepth 2이미 사용하고 있는 부분입니다. 표준에 해당하는 것은 다음과 같습니다.

find . -name '.?*' -prune -o \
   \( ! -path './*/*' -o -prune \) \
   -type d -name '?*.*' -print

답변3

find버전이 정규식을 지원하는 경우 정규식을 사용할 수 있습니다.

find . -maxdepth 2 -type d -regex '.*/[^./][^/]*\.[^/]*'

이는 이름이 "." 이외의 문자로 시작하는 모든 디렉터리(최대 깊이 2)와 일치합니다. 다른 곳에는 "."이 포함되어 있습니다.

관련 정보