특정 이름으로 시작하는 파일을 검색해야합니다. 특정 패턴으로 시작하는 여러 파일이있을 수 있으며 디렉토리에있는 모든 파일을 나열하고 싶습니다.
답변
기존 답변을 완료하려면
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
.