[unix] 찾을 대안? [닫은]

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}'


답변