폴더 이름에 .가 포함된 모든 파일을 찾는 방법은 무엇입니까? 다음을 시도했지만 원하는 폴더가 아닌 모든 폴더가 나열되었습니다. 찾다. -최대 깊이 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)와 일치합니다. 다른 곳에는 "."이 포함되어 있습니다.