답변:
또는...
find $directory_name -name \*.sql
예를 들어
find / -name \*.sql
또는
find ~ \*.sql
(여기서 ~는 / home / your_username /과 동일) 또는 ...
find /usr/local/share/ \*.sql
기타 등등.
명령 행에서 이것을 실행하십시오 :
cd / && find | grep '\.sql$'
'/'를 검색하려는 디렉토리로 변경하십시오.
이 find
명령은 grep없이 작업을 수행 할 수 있지만 (추가 옵션 사용) 위의 사용법이 더 편리하다는 것을 알았습니다.
위의 명령을 순서대로 수행하십시오.
cd /
)로 변경find
).| grep '\.sql$'
)로 끝나는 모든 파일과 디렉토리를 필터링합니다.find
이미 필터 기능이있다
나는 이것이 오래된 게시물이라는 것을 알고 있지만 이것에 대해 전혀 새로운 것이 아니며 디렉토리와 하위 하위 디렉토리에서 특정 확장자의 모든 파일을 쉽게 찾을 수있는 방법을 찾았습니다. 글쎄 당신은 먼저 parent Directory
그때로 이동하면 .sqlfind . -name '*.sql'
이있는 모든 파일을 찾을 수 있습니다. 하면 디렉토리와 그 하위 디렉토리에 확장자 .
필자의 경우 디렉토리와 하위 디렉토리의 모든 .xml 파일 을 삭제하고 싶었 으므로 여기에서와 같이 제거를 추가했습니다.find . -name '*.xml' | xargs rm
이것이 누군가를 돕기를 바랍니다 :)
find
-delete
명령을 이해합니다 . 관여 할 필요가 없습니다 rm
. 또는 -exec
명령을 사용하여 파이프와를 통해 우회하지 않고 직접 호출 할 수 있습니다 xargs
.
locate -br \\.sql$ | egrep '^/folder/path/'
설치되어 있지 않은 경우 이전에 다음을 설치하십시오.
sudo apt install mlocate
mlocate.db
Ubuntu에서 즉시 설정하지 않은 최신 인스턴스가 필요합니다 (나는 믿는다). 또한 왜 간단하지 locate '/folder/path/*.sql'
않습니까?
locate
정규 표현식에 사용 된 정규 표현식과 다른 설정이 있다고 생각합니다 .egrep
locate
/folder/path/*.sql
정규 표현식이 아닌와 같은 glob 표현식과 일치 합니다.
man locate
나는 -r, --regexp REGEXP - Search for a basic regexp REGEXP
정규식이라고 생각했습니다. 어쨌든 나는 당신의 "글로벌 표현"을 시도했지만 작동하지 않습니다, 죄송합니다
--regex
지정되지 않은 경우 PATTERN
의 문자를 globbing을 포함 할 수 있습니다."( 소스 )