파일 이름이 Macbook에서 파일을 찾고 싶습니다 : abc.dmg
. 스포트라이트를 사용하려고했지만 찾지 못했습니다. 찾기를 시도하고 사용했을 때 : find -name abc.dmg -path /
오류가 발생했습니다.
Mac OSX 터미널에서 find 명령을 사용하여 파일 이름으로 파일을 찾는 올바른 구문은 무엇입니까?
파일 이름이 Macbook에서 파일을 찾고 싶습니다 : abc.dmg
. 스포트라이트를 사용하려고했지만 찾지 못했습니다. 찾기를 시도하고 사용했을 때 : find -name abc.dmg -path /
오류가 발생했습니다.
Mac OSX 터미널에서 find 명령을 사용하여 파일 이름으로 파일을 찾는 올바른 구문은 무엇입니까?
답변:
가장 간단한 형태로 find
하나의 매개 변수 인 경로를 사용합니다. 실제로 유용한 형식으로 좁은 기준을 따르는 경로를 사용합니다.
따라서 다음을 원합니다.
find
(프로그램)/
(경로)-name abc.dmg
(기준).find / -name abc.dmg
find
중요 하다는 점에 주목할 가치가 있습니다. 이어야합니다 find [path]+ [selection, grouping, and actions]
.
이 mdfind
명령은 Spotlight 데이터베이스를 사용합니다
http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html
가장 간단한 방법 (이미 시도했지만 확실하게 스레드에 추가하겠습니다)은 파인더 창의 오른쪽 상단에있는 검색 상자에 abc.dmg를 입력 한 다음 "파일"을 선택하는 것입니다. 표시되는 검색 창의 옵션에서 "이름"을 클릭하십시오.
터미널이 필요 없습니다.
또한 Spotlight는 Spotlight 제어판에 지정된 디렉토리 만 색인하며 abc.dmg는 해당 디렉토리 중 하나에 없을 수 있습니다.
내가 틀렸다면 정정하십시오. 그러나 find 명령은 무엇을 출력 해야하는지 알아야한다고 생각합니다.
find / -name abc.dmg -print
... 모든 결과를 터미널에 인쇄해야합니다 (권한 오류 포함).
권한 오류를 원하지 않고 다른 사용자 디렉토리를 검색하려면 다음을 수행하십시오.
sudo find / -name abc.dmg -print
다음 명령 줄 기능을 사용하여 관련 파일을 빠르게 찾아서 열 수 있습니다. 스포트라이트 창에 긴 쿼리 문자열을 입력하는 것보다 쉽게 찾을 수 있습니다.
에 다음 기능을 추가하십시오 ~/.bash_aliases
.
# find any item matching search query in file name
spot(){
mdfind "kMDItemDisplayName=='*$1*'cd";
}
# restrict to files under (recursive) a specific path
findpaper(){
mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}
# default to open the first entry unless 2nd positional argument is given
openpaper(){
FILEID=$(printf "%sp" ${2:-1})
open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"
}
이제 source ~/.bash_aliases
새 터미널로드 기능을 열거 나여십시오. 파일 이름에 단어, 파이 및 2016이 포함 된 파일을 검색하려면
spot pie*2016 #or
spot 2016*pie
*
검색어를 검색 패턴 앞에 추가하거나 추가 할 필요는 없으며 '*$1*'
이미 검색어의 시작과 끝에 와일드 카드 항목에 태그를 지정합니다. cd
대소 문자를 구분하지 않고 발음 구별 부호를 무시하는 경우가 추가 fred
됩니다 ( 예 : Frédéric 및 FrEDeric).
findpaper
검색을 특정 경로 (재귀) 아래의 결과로 제한하는 한편 openpaper pie*201
(또는 여러 개의 결과 중 첫 번째) 검색 결과 openpaper pie*201 3
를 열거 나 세 번째 결과 항목을 엽니 다. bash 스크립트 또는 기타 비 문서 파일을 열지 않으려면 추가 검색 속성으로 파일 내용을 제한 할 수 있습니다. 다른 검색 연산자 사용에 대해서는 파일 메타 데이터 쿼리 표현식 구문 및 https://ss64.com/osx/mdfind.html 을 참조하십시오 .
/에서 루트로 디스크의 모든 파일 목록을 캡처하십시오.
sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt
grep을 통해 전체 파일을 분류하여 전체 드라이브를 검색하십시오.
cat ~/file-list.txt | grep abc.dmg
정규식을 사용하여 .jpg 및 .dmg 파일 만 표시하십시오.
cat ~/file-list.txt | grep -E "(\.dmg|\.jpg)"
결과:
Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg
...기타. 불행히도 마운트 된 모든 디스크를 캡처하므로 많은 링크가있는 Time Machine 디스크를 추출하는 것이 가장 좋습니다. 그래서 또 다른 창 watch tail -n 10 ~/file-list.txt
에서 나는 끔찍한 해킹의 상태를 보여줍니다!
sudo find / > ~/file-list.txt
전체 쉘을 루트로 실행하는 것보다 낫습니다. (2) find *
는에서 숨겨진 (점) 객체 (있는 경우 ) 를 건너 뜁니다 /
. (3) &>
은 bashism입니다. (4) 쓸모없는 사용 cat
. (5) grep abc.dmg
는 예를 들어 인쇄 /foo/bar/123abcXdmg456/baz/whatever
합니다. //이 스레드에 대한 답변 중 하나는 사용자가 find
한 번 실행 한 다음 파일 시스템을 반복해서 쿼리하지 않고 저장된 결과를 여러 번 재사용하는 방법입니다. 이 잠재적 이점은 강조되지 않습니다.