locate 데이터베이스는 파일 시스템의 색인 정보를 저장하며, 일반적으로 시스템에서 파일을 검색하기 전에 이 데이터베이스를 참조합니다.
locate – find filenames quickly
locate [-0Scims] [-l limit] [-d database] pattern ...
locate 입력했는데
User
WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.
이런 오류가 나왔다!
해당 오류는 "/var/db/locate.database" 위치에 locate 데이터베이스가 존재하지 않아서였다
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
이 명령어 실행하고. 아무일이 없더라도... DB 설치중...이니 조금 기다리자
Load failed: 37: Operation already in progress
zzzz
설치가 다 되면 잘 나온다!
-i
대소문자 구분 x-l
결과의 갯수 제한-e
현재 존재하는 파일인지 확인locate 보다 강력하지만 시간이 조금 걸림
실제로 디렉토리 전체나 컴퓨터 전체를 검색
인자 없이 find를 실행하면, 현재 위치부터 시작해 하위 디렉토리의 모든 것들을 표시
-type d
: directory-name
"" 따옴표 사용, 대소문자 구분dduui-MacBookPro:~ ddu$ find ~ -type f -name "*.txt"
-size
파일 사이즈로 필터링find -size +1G
-user
사용자!-empty
빈파일이나 디렉토리- and 는 묵시적으로 사용하므로 생략함
- or 둘중 하나
> find -name "*chick*" -or -name "*kitty"
- not !
> find -type -f -not -name "*.html"
=> find -type -f ! -name "*.html"
find로 찾은 모든 것 대해서 어떤 명령을 수행하는 방법
-exec command{};
-ok
실행여부 묻기
xargs로 실행했을 때는 조금 다릅니다, xargs는
표준 입력의 결과를 꾸러미 형식으로 바꿔서, 이를 딱 한 번만 실행합니다
-exec 보다 효율적일 수 있음 !
xargs 는 표준입력을 받아 인자목록으로 변환함. > 전달가능 하고 표준입력이 불가능한 명령어에 이를 추가해 사용할 수 있음
ex)echo hello | xargs mkdir