find
보다 일반적인 CLI 인터페이스 가있는 대체 프로그램이 있습니까? find
대부분의 다른 유틸리티와는 다른 방식으로 매개 변수가 작동하고 예상됩니다.
설명 : POSIX (또는 적어도 GNU) 명령 줄 권장 사항처럼 작동하고 느껴지는 명령 줄 인터페이스로 찾기와 대부분 동일한 기능을 가진 프로그램을 찾고 있습니다.
답변
이것은 일반적인 오해입니다.
찾기 옵션 구문을 따릅니다. 식 기본을 옵션과 혼동하고 있습니다.
find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
[cmd][--> options <--] [--> arg0..argN <--]
대안은 찾습니다. 그러나 find는 더 풍부한 필터 및 작업 옵션 세트를 제공하기 때문에 자체 식 구문을 구현합니다. 단순히 중복 될 수 있기 때문에 동일한 작업을 수행 할 수있는 대안은 없습니다.
답변
그것은 find
당신이 의지하고 있는 정확한 기능에 달려 있습니다. (주로) 찾기 기능인 경우 일부 쉘은 재귀 글로브를 지원합니다. 예를 들면 다음과 zsh
같습니다.
% find . -name \*c
./a/b/foo.c
./a/bar.c
./baz.c
inoshiro% ls *.c
baz.c
% ls **/*.c
a/bar.c a/b/foo.c baz.c
Zsh는 glob 한정자를 통해 훨씬 더 유사한 가능성을 가지고 있습니다 (끝 부분 근처에 있음 man zshexpn
). 예를 들면 다음과 같습니다.
ls -l **/*(.)
≈ find -type f -ls
ls *(m-2u:$USER:)
≈ find -mtime -2 -user $USER
Bash 4에는 **/
(로 활성화해야 함 shopt -s globstar
) 있지만 glob 한정자와 같은 것은 없습니다.
답변
나는 살펴볼 것이다 locate
. 파일 데이터베이스를 살펴보고 사용자가 지정한 것과 일치하는 경로 이름을 빠르게 인쇄합니다.
kevin@box:~$ locate odg
/home/kevin/Documents/final.odg
/usr/share/doc/packages/sysconfig/netconfig.odg
/usr/share/gimp/2.0/help/en/gimp-tool-dodge-burn.html
....
kevin@box:~$ locate .odg
/home/kevin/Documents/final.odg
/usr/share/doc/packages/sysconfig/netconfig.odg
kevin@box:~$
당신이 볼 수 있듯이, 그것은 서브 텍스트 이상형 : 당신이 그것을 주면 odg
, 다음은 D 일치 ODG의 전자. 그러나 당신이 그것을 준다면 .odg
, 그렇지 않을 것입니다.
그러나 단점이 있습니다. 데이터베이스가 필요합니다. 상황이 바뀌면이 데이터베이스를 업데이트해야합니다. Fedora 13을 설치하면 매일 crontab에 저장됩니다.
답변
무엇을 찾으려고합니까? 일반적으로 소스 코드 파일을 검색하는 경우를 참조하십시오 ack
. 기본적으로 소스 코드 검색 도구이지만 ack의 -f
스위치는 주어진 파일 형식과 일치하는 파일을 찾습니다.
따라서 디렉토리에서 모든 Perl 파일을 찾으려면 다음과 같이하십시오.
ack -f --perl
ack이 인식하는 파일 형식이 마음에 들지 않으면에 파일 형식을 추가 할 수 있습니다 ~/.ackrc
.
ack는와 같은 범용 파일 찾기가 find
아니지만 소스 코드로 작업하는 경우 매우 유용 할 수 있습니다.
답변
모든 프로그래머가 배워야 할 가장 큰 것 중 하나는 다음과 같습니다. 도구를 찾을 수 없으면 자신 만의 도구를 만드십시오!
#!/usr/bin/bash
find -name $<
-t
필터 유형 등 으로 더 나은 것을 작성할 수 있습니다 .
편집 : 위는 Bash 스크립트입니다. 명령 행 인수를 받아서 -name 옵션의 값으로 찾기 위해 전달합니다. 간단한 예입니다. 이 답변을 작성한 후이 파이썬 스크립트를 찾았습니다.
https://github.com/sjl/friendly-find/
인터페이스는 멋지지만 성능을 테스트하지 않았습니다. 체크 아웃 할 가치가있을 수 있습니다.
답변
유닉스에서 물건을 찾는 가장 표준적인 방법.
du -a <directory>|grep <pattern>| awk '{print $2}'