2012-10-29 3 views
86

나는 우분투에 있고, 이름에 문자열 "John"이 들어있는 현재 디렉토리와 서브 디렉토리의 모든 파일을 찾고 싶다. grep은 파일의 내용과 일치 할 수 있지만 파일 이름과 함께 사용하는 방법을 알지 못합니다. 어떤 도움을 주시면 감사하겠습니다.리눅스는 주어진 문자열로 파일 이름을 찾는다.

+0

가능한 복제 [I 재귀 와일드 카드 일치를 기반으로 현재와 하위 폴더의 모든 파일을 찾을 수 있습니까?] (http://stackoverflow.com/questions/5905054/how-can-i-recursively-find- 모든 파일 - 현재 및 하위 폴더 - 와일드 카드) –

답변

161

는 정답이 이미 공급 된

find . -type f -name "*John*" 
+4

'찾기. -type f -name "* John *"' – Xeoncross

+1

'#!/bin/bash 으로 사용자 정의 bash 스크립트 작성하기 [-z $ 1]; then echo "Error : 검색을위한 패턴 지정"; 그렇지 않으면/usr/bin/find. -type f -name "* $ 1 *"; fi '완벽한 단축키로'F search-string'을 실행시킬 수 있습니다. –

+0

@IliaRostovtsev - 좋지만'[-z "$ 1"]'조금 더 좋을 것입니다. – Joe

23

find 명령을 사용하지만, 당신을 위해 내가 다른 방법으로 도움이 뭔가를 던져 줄 알았는데 자신을 도와하는 방법을 배우고, 한 단어로 성취하고자하는 것을 요약 할 수 있다면 리눅스에 훌륭한 도움이 될 것입니다.

man -k <your search term> 

간단한 설명에 검색어가 포함 된 모든 명령을 나열하는 것입니다. 일반적으로 당신이 할 수있는 좋은 기회가 있습니다. 당신이 뭘하고 있는지 찾아보십시오.) 출력이 때때로 약간 압도 될 수 있으며, 내가 지금처럼, 오히려 사용 가능한 모든 사람이 페이지보다, 실행 파일로 좁히는 것을 권 해드립니다 그건

: 당신은 또한 원하는 경우,

man -k find | egrep '\(1\)' 

또는 다음과 같이 더 높은 권한 수준이 필요한 명령을 찾으십시오.

man -k find | egrep '\([18]\)' 
+2

나는 호기심이 ... 검색을 통해 문제를 해결하려는 시도가 없다는 것을 보여주는 질문은 가능한 투표에 대해 알아 보는 방법에 대한 호의적 인 설명을받습니다. 기준은 무엇입니까? :) – tink

+1

나는 당신을 upvoted. 수업은 거의 할 수 없습니다. 하지만 우리는 샘플을 볼 수 있으며 적응할 수 있습니다 :) – tgkprog

1

사용법은 간단합니다. 그냥 입력 ack <string to be searched>

+0

그것은 또한 파일뿐만 아니라 검색 텍스트를 포함하는 모든 _paths_를 포함하는 것 같습니다 : http://stackoverflow.com/questions/7698867/can-ack-find-files-based-on -filename-only –

1

find 명령은 파일 시스템의 실제 파일을 검색하므로 시간이 오래 걸립니다.

즉시 결과를 줄 것이다 locate 명령을 사용하는 가장 빠른 방법 : 명령이 발견되지

locate "John" 

경우 먼저에 대한 검색 데이터베이스를 준비하는 mlocate 패키지를 설치하고 updatedb 명령을 실행해야 처음으로. 여기

더 많은 세부 사항 : http://itblog.study.land/the-fastest-way-to-find-files-by-filename-mlocate-locate-and-updatedb-commands-2/

0

이 검색 할 디렉토리에 tree 명령을 사용하여 매우 간단한 솔루션입니다. -f은 전체 파일 경로를 나타내고 |grep으로 트리 출력을 파이프하여 이름에 filename 문자열이 포함 된 파일을 찾습니다.

tree -f | grep filename 
관련 문제