디렉토리에서 이름 “ABC”로 시작하는 모든 파일을 검색하는 방법은 무엇입니까? 시작하는 파일을 검색해야합니다. 특정

특정 이름으로 시작하는 파일을 검색해야합니다. 특정 패턴으로 시작하는 여러 파일이있을 수 있으며 디렉토리에있는 모든 파일을 나열하고 싶습니다.



답변

기존 답변을 완료하려면

ls

기본 디렉토리 목록 유틸리티 ls는 쉘의 와일드 카드와 함께 사용할 수 있습니다. 패턴이있는 모든 파일을 검색하려면 다음을 수행하십시오 abc.

ls abc*   # list all files starting with abc---
ls *abc*  # list all files containing --abc--
ls *abc   # list all files ending with --abc

파일 확장자는 검색 결과와도 관련이 있습니다.


tree

디렉토리 트리에 파일을 나열해야하는 경우 tree다음 과 같은 주어진 패턴 을 검색하도록 발행 할 수도 있습니다 .

tree -P 'abc*'  # list directory tree of file starting with abc---
tree -l 'def*'  # exclude files starting with def---

이 경우 tree자체는 와일드 카드를 지원합니다.


답변

find패턴을 사용 하여 파일을 검색 하는 명령을 사용할 수 있습니다

find . -type f -name "abc*"

위의 명령은 현재 작업 디렉토리에서 abc로 시작하는 파일을 검색합니다.

-name 'abc'정확히 일치하는 파일을 나열합니다. 예 : abc

당신은 또한 사용할 수 있습니다

 -iname
 -regex

find패턴을 사용하여 파일 이름을 검색 하는 명령이있는 옵션


답변

당신이 그들과 함께하고 싶은 일에 따라 여러 가지 방법이 있습니다. 일반적으로 목록을 표시하려면 다음을 사용하여 터미널에서 할 수 있습니다.

find | grep '^\./ABC'

… 그리고 ABC당신의 텍스트로 대체 .

명령을 이해하려면 조금 세분화하십시오.

  • find현재 디렉토리 및 해당 서브 디렉토리 아래의 모든 파일을 나열합니다. 그것을 혼자 사용하면 거기에 모든 것이 나열됩니다. 로 find시작하는 각 파일 또는 디렉토리 를 출력하여 ./해당 경로가 현재 디렉토리에 상대적임을 나타냅니다. 이 사실을 아는 것은 우리가 ./ABC아니라 시작하는 결과를 검색한다는 것을 의미하기 때문에 중요합니다 ABC.

  • 파이프 문자 |는 한 명령의 출력을 다른 명령으로 리디렉션하며,이 경우의 출력은 find로 리디렉션됩니다 grep. 이것을 파이핑이라고합니다.

  • grep출력을 받아서 주어진 패턴을 사용하여 필터링합니다 ^\./ABC.

    • ' '쉘이 특수 문자를 해석하지 못하도록 패턴은 작은 따옴표 로 인용됩니다 .
  • 이제 패턴 자체는 regular expression 또는 regex 라고하는 특정 구문으로 작성되었습니다 . 정규식은 당신이 그것을 마스터하면 매우 강력한 검색 도구이며, 같은 사이트가 더 깊이에 대해 가르치는는하지만주의 grep본격적인 정규식 엔진을하지 않고 당신이 그것으로 모든 것을 할 수 있습니다.

  • 우리의 목적을 위해 :

    • ^정규식에서 문자열의 시작과 일치합니다. 파일 이름의 시작 부분에 패턴이 나타나지 않으면 패턴과 일치하지 않습니다.

    • .정규 표현식에서 특별한 의미가 있습니다. “여기에 모든 단일 문자 일치”를 의미합니다. 리터럴 점으로 사용하려면 백 슬래시 \를 사용하여 점을 이스케이프 처리 해야합니다. (그렇습니다. 어떤 캐릭터와도 일치하는 것은 우리의 경우 무해하지만, 나는 완전성을 위해 그것을했습니다.)


답변

GREP을 사용할 수 있습니다. 이것이 가장 간단한 해결책이라고 생각합니다. 아마도 다른 grep 매개 변수를 추가하여 일치를보다 정확하게 만듭니다.

tree | grep ABC


답변

노틸러스 파일 관리자 및 정규식을 사용하여 특정 패턴을 검색 할 수 있습니다.

이렇게하려면 아래처럼 기어 메뉴에서 일치 하는 항목 선택을 클릭하십시오 ( Ctrl+ 를 누를 수도 있습니다 s).

여기에 이미지 설명을 입력하십시오

그런 다음 정규 표현식을 입력 ABC*하고 확인하십시오.

여기에 이미지 설명을 입력하십시오

패턴과 이름이 같은 모든 파일이 자동으로 선택됩니다.

여기에 이미지 설명을 입력하십시오

Ubuntu 12.10 (Quantal)의 GNOME3 PPA 에서 Nautilus 3.6. *를 사용하고 있습니다.


답변

나에게 가장 쉬운 해결책

ls | grep PATTERN

PATTERN에서 정규 표현식을 제공 할 수 있습니다.

예를 들어, 이름 내에 “ab”가있는 파일을 찾으려면 다음을 입력하십시오.

ls | grep ".*ab.*"

“ab”로 시작하는 파일을 찾으려면 다음을 입력하십시오.

ls | grep "^ab"


답변

ABC*파일이 있는 디렉토리 를 모르고 수백만 개의 파일 locate이있는 경우 명령이 가장 빠른 방법입니다.

$ locate /ABC
/mnt/clone/home/rick/.cache/mozilla/firefox/9fu0cuql.default/cache2/entries/ABC6AD2FEC16465049B48D39FD2FE538258F2A34
/mnt/clone/home/rick/.cache/mozilla/firefox/9fu0cuql.default/cache2/entries/ABCBFDA54262F47253F95ED6ED4131A465EE0E39
/mnt/clone/usr/src/linux-headers-5.0.1-050001/tools/lib/lockdep/tests/ABCABC.sh
/mnt/clone/usr/src/linux-headers-5.0.1-050001/tools/lib/lockdep/tests/ABCDBCDA.sh
/mnt/clone/usr/src/linux-headers-5.0.1-050001/tools/lib/lockdep/tests/ABCDBDDA.sh
/mnt/old/home/rick/.cache/mozilla/firefox/3vkvi6ov.default/cache2/entries/ABC0C99FCEABAD0C6AA2078CD025A1CDE48D7BA1
/usr/src/linux-headers-5.0.1-050001/tools/lib/lockdep/tests/ABCABC.sh
/usr/src/linux-headers-5.0.1-050001/tools/lib/lockdep/tests/ABCDBCDA.sh
/usr/src/linux-headers-5.0.1-050001/tools/lib/lockdep/tests/ABCDBDDA.sh

노트:

  • 위 명령은 1 백만 개의 파일에서 실행하는 데 1 초가 걸립니다.
  • 이에 비해 루트 디렉토리 find에서 시작 하는 명령 /시간이 오래 걸리고 많은 권한 오류가 발생합니다.
  • 오늘 파일이 작성된 경우 먼저 실행해야합니다 sudo updatedb.