별칭을 찾으려면 찾기를 사용하세요.

별칭을 찾으려면 찾기를 사용하세요.

별칭을 설치 하지 않고 locate소규모 시스템에서 찾는 것과 동일한 결과를 얻으려면 어떻게 해야 합니까 ?

find동일한 출력이 생성될 수 있다고 상상할 수 있으므로 별칭은 다음과 같습니다.

alias locate="find / -name"

그러나 이것은 찾기와 동일하게 작동하지 않는 것 같습니다.

locate test

해당 이름의 파일만 검색됩니다.정확히찾기 시 호출되면 test해당 파일을 포함하는 모든 파일을 찾습니다.

해결책

사용:

locate *test*

답변1

조회 속도에 대한 큰 영향을 개선하려면 위치 지정과 같은 것을 시뮬레이션할 수 있습니다.

alias locate="if [ ! -e /tmp/locate.db -a ! -e /tmp/locate.lockdb ]
then touch /tmp/locate.lockdb
trap \"rm /tmp/locate.lockdb; rm /tmp/locate.db; exit\" SIGHUP SIGINT SIGTERM
find /|tee /tmp/locate.db
chmod 666 /tmp/locate.db
rm /tmp/locate.lockdb
elif [ -e /tmp/locate.lockdb ]
then find /
else cat /tmp/locate.db
fi|grep "

물론 권한 문제입니다! 그러나 데이터베이스에 대한 일부 setuid 명령을 작성 tee하고 cat수퍼유저 모드 및 더 나은 위치에서 데이터베이스에 쓰는 것이 더 나을 것입니다 /tmp.

locate.db대부분의 단일 사용자 또는 소수 사용자 시스템에서 저렴한 대안은 각 사용자를 근접하게 프로그래밍하는 것입니다 $HOME.

또 다른 좋은 별칭은 업데이트/찾기가 가능하다는 것입니다. 글쎄, 결국 나는 이 별명이 원본보다 더 나은 위치에 있다고 생각합니다.)

alias relocate="if [ ! -e /tmp/locate.lockdb ]
then rm /tmp/locate.db
fi
locate "

편집하다 사실 리타겟팅도 위의 타겟팅 별칭처럼 사용해야 한다고 생각합니다. 매개변수 없이 재배치를 사용하면 오류가 발생합니다. relocate "no file to search for"검색을 원하지 않고 데이터베이스만 업데이트하려는 경우에 사용하는 것이 좋습니다 .

좋습니다. 해당 조회도 설정해야 합니다. 하지만 그러면 위치 팩을 버릴 수 있습니다. 인수는 참조 지점 grep으로 전달되어야 합니다 .sed.

초보자가 주의할 점: 여기서 setuid에 대해 이야기할 때유사한 도구에 SETUID 플래그를 설정하지 마십시오 tee, cat또는 find. 이것은 시스템의 보안 허점이 될 것입니다! 내 말은 이 별칭에 적합한 도구를 제공하기 위해 setuid 모드에서 제한된 방식으로 작동하는 이러한 간단한 명령에 대한 안전한 대안을 작성한다는 것입니다.

답변2

function locate_f()
{
        find / -path "*$1*" //Edit:path (as Gilles stated)
}
alias locate=locate_f

답변3

노력하다

alias locate="find / | grep "

이는 찾기와 정확히 동일해야 하지만 물론 속도가 훨씬 느려집니다.

답변4

1) 모든 사용자에 대해 전역적으로 별칭을 추가합니다.

echo 'alias locate="grep $1 /var/locate/locate.db"' >> /etc/bashrc

기본적으로 보다 직관적인 매개변수 선택을 할 수 있는 쉘 스크립트를 가리킬 수 있습니다. 매우 간단한 검색을 찾고 있다면 이것으로 충분합니다.

2) 매일 실행할 Cron Job을 추가합니다.

/etc/cron.daily
#!bin/bash
if [[ ! -d /var/locate ]]; then
     mkdir /var/locate
fi
locatedb=/var/locate/locate.db
rm -f $locatedb
for DIRS in `ls /|grep -v "proc"`
do
   find /$DIRS -type f >> $locatedb 2>&1 /dev/null
done

mlocate를 설치하지 않고도 mlocate와 동일한 결과를 얻을 수 있습니다. 방금 CentOS에서 테스트해 보았습니다. 결과는 거의 동일합니다.

관련 정보