Mac OSX 터미널에서 파일 이름으로 파일을 찾으려면 어떻게합니까?


118

파일 이름이 Macbook에서 파일을 찾고 싶습니다 : abc.dmg. 스포트라이트를 사용하려고했지만 찾지 못했습니다. 찾기를 시도하고 사용했을 때 : find -name abc.dmg -path /오류가 발생했습니다.

Mac OSX 터미널에서 find 명령을 사용하여 파일 이름으로 파일을 찾는 올바른 구문은 무엇입니까?


1
@VxJasonxV Apple 질문은 슈퍼 유저에 대한 주제에 대해 100 %이며, 모든 Apple 질문을 실제로 옮길 필요는 없습니다. 그러나 iPhone 또는 iPad 질문은 필요할 때 / 필요한 경우 이동됩니다.
BinaryMisfit

주제가 아닌 이유는 아니지만이 일반적인 주제에 대해 더 구체적인 주제 / 사이트가 있다는 사실입니다.
VxJasonxV

@Diago : 메타 나 채팅에 관한 논의가 있었습니까? AFAIK apple.SE가 곧 베타 버전으로 출시되기 때문에 궁금한 점이 있으므로 모든 사람을 같은 페이지에 배치하는 것이 좋습니다.
Robert S Ciaccio

1
@calavera. 상당히 오래된 토론이지만 관련 내용은 여기 에서 찾을 수 있습니다 . Apple SE, Ubuntu SE 및 Linux SE는 모두 수퍼 유저를 칭찬하지만 사용자를 강제로 움직이고 싶지는 않습니다. 나는 3 가지 운영 체제를 사용하기 때문에 Apple보다는 Apple에 대한 질문을 선호합니다. 매우 구체적인 질문이 있으면보다 전문적인 사이트에서 질문 할 것입니다.
BinaryMisfit

답변:


163

가장 간단한 형태로 find하나의 매개 변수 인 경로를 사용합니다. 실제로 유용한 형식으로 좁은 기준을 따르는 경로를 사용합니다.

따라서 다음을 원합니다.

  • find (프로그램)
  • / (경로)
  • -name abc.dmg (기준).
find / -name abc.dmg

12
전체 드라이브를 검색 할 때 권한 거부 유형 오류가 발생할 수 있지만 파일이 제한된 폴더에있을 것으로 예상하지 않는 한 무시할 수 있습니다. 그래서 사용하는 경우 는 sudo를 찾을 수 / -name abc.dmg
크리스 나바

그것을 시도했지만 결과는 없습니다.
SPRBRN

6
컴퓨터에 abc.dmg라는 파일이 없을 것입니다. -name 대신 -iname을 사용하여 대소 문자를 구분하지 않고 검색 할 수 있습니다. 실제로 "abc.dmg"를 검색하고 있다는 사실이 의심스럽고 (아마도) 사실을 감안할 때 실제 세부 정보가 없으면 문제가 무엇인지 말하기가 어렵습니다.
VxJasonxV

2
@rxt : 만약 dooesn을 찾지 못하면, 거기에 없습니다 ...
Robert S Ciaccio

5
OP 보고서가 질문 텍스트에서 찾기를 시도 했으므로 인수의 순서가 find 중요 하다는 점에 주목할 가치가 있습니다. 이어야합니다 find [path]+ [selection, grouping, and actions].
dmckee

23

find . -name '*.csv'예를 들어 와일드 카드로 저를 위해 일했습니다. OP는 find . -name '*.dmg'자신이에 있다고 가정하고 현재 디렉토리를 확인 하는 데 사용할 수도 있습니다 /.



6

locate명령을 사용할 수 있습니다 .

locate abc.dmg

2
osx태그를 참고하십시오 . slocate db는 기본적으로 채워지지 않습니다.
VxJasonxV

데이터베이스를 작성한 후 시도했지만 결과가 없습니다.
SPRBRN

경우 locatemdfind모두 실패, 기회는 파일이 컴퓨터에없는입니다. 또는 이름이 어떻게 생각되는지 이름이 지정되지 않았습니다. 아마도 모든 DMG를 검색하는 것이 다음 단계 일 수 있습니까?
peelman

3

가장 간단한 방법 (이미 시도했지만 확실하게 스레드에 추가하겠습니다)은 파인더 창의 오른쪽 상단에있는 검색 상자에 abc.dmg를 입력 한 다음 "파일"을 선택하는 것입니다. 표시되는 검색 창의 옵션에서 "이름"을 클릭하십시오.

터미널이 필요 없습니다.

또한 Spotlight는 Spotlight 제어판에 지정된 디렉토리 만 색인하며 abc.dmg는 해당 디렉토리 중 하나에 없을 수 있습니다.

내가 틀렸다면 정정하십시오. 그러나 find 명령은 무엇을 출력 해야하는지 알아야한다고 생각합니다.

find / -name abc.dmg -print

... 모든 결과를 터미널에 인쇄해야합니다 (권한 오류 포함).

권한 오류를 원하지 않고 다른 사용자 디렉토리를 검색하려면 다음을 수행하십시오.

sudo find / -name abc.dmg -print

2

다음 명령 줄 기능을 사용하여 관련 파일을 빠르게 찾아서 열 수 있습니다. 스포트라이트 창에 긴 쿼리 문자열을 입력하는 것보다 쉽게 ​​찾을 수 있습니다.

에 다음 기능을 추가하십시오 ~/.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 을 참조하십시오 .


대박! 스틸 링 : D
Atcold

0

/에서 루트로 디스크의 모든 파일 목록을 캡처하십시오.

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에서 나는 끔찍한 해킹의 상태를 보여줍니다!


1
나쁜 관행이나 의견이 필요한 것들 : (1) sudo find / > ~/file-list.txt전체 쉘을 루트로 실행하는 것보다 낫습니다. (2) find *는에서 숨겨진 (점) 객체 (있는 경우 ) 를 건너 뜁니다 /. (3) &>은 bashism입니다. (4) 쓸모없는 사용 cat. (5) grep abc.dmg는 예를 들어 인쇄 /foo/bar/123abcXdmg456/baz/whatever합니다. //이 스레드에 대한 답변 중 하나는 사용자가 find한 번 실행 한 다음 파일 시스템을 반복해서 쿼리하지 않고 저장된 결과를 여러 번 재사용하는 방법입니다. 이 잠재적 이점은 강조되지 않습니다.
Kamil Maciorowski

좋은 점 감사합니다 Kamil, 그 일을하고 $ (whoami)을 chown
Tomachi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.