Mac 터미널“find”명령 : 결과 출력에서 ​​이중 슬래시 란 무엇입니까?


9

크고 중첩 된 디렉토리 구조에서 검색하기 위해 find 명령을 사용합니다.

결과 출력에는 때때로 이중 슬래시 (//)가 포함됩니다.

예 ( "다운로드"후) :

#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf

처음에는 현재 작업 디렉토리를 표시한다고 생각했습니다. 그러나 그렇지 않습니다.

이 이중 슬래시의 의미는 무엇입니까?

일반적으로 결과를 클립 보드에 복사하고 파인더로 변경합니다. 그런 다음 "shift"+ "command"+ "g"를 입력하고 경로 (파일까지)를 상자에 붙여 넣습니다. 포함 디렉토리가 열리도록

잘 작동합니다. 그러나 이중 슬래시는 수동으로 제거해야합니다.

따라서 어떻게 피할 수 있습니까?


2
이중 슬래시를 제거 할 필요는 없습니다. 이중 슬래시는 경로 의 시작 부분 에서만 특별하며 정확히 두 개의 슬래시 인 경우 에만 특별합니다 . 중간 또는 끝에 있는 여러 개의 슬래시 또는 처음에 정확히 두 개보다 많은 수의 슬래시는 하나의 슬래시와 정확히 같습니다. POSIX / SUS 사양에 의해 보장됩니다.
Jörg W Mittag

답변:


17

find오히려 문자 그대로입니다. "~ / Downloads /"내에서 검색하도록 지시하면 찾은 모든 것을 접두사로 사용합니다 (후행 슬래시 포함). 지정한 경로 끝에 불필요하고 관련없는 슬래시가 있기 때문에 출력에 불필요하고 관련없는 추가 슬래시가 생깁니다.

솔루션 : 검색 디렉토리에서 후행 "/"를 제거하십시오.

#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
#> find ~/Downloads -iregex ".*some.*"
/Users/michael/Downloads/subDirectory/some_file.pdf

4

이 이중 슬래시의 의미는 무엇입니까?

이상한 오래된 BSD 찾기를 사용하고 있음을 의미합니다.

어떻게 피할 수 있습니까?

원래 명령에서 후행 슬래시를 생략 할 수는 있지만 탭 완성을 통해 자동으로 추가되므로 (가능한 한 많이 사용해야 함) 실제로 후행 슬래시는 무수히 많은 곳에서 사용되므로 확실하게 '파일 이름이 아닌 디렉토리를 다루고 있습니다.

대신 다음 중 하나를 수행하는 것이 좋습니다.

a) sed 할 파이프를 찾기 위해 랩퍼를 작성하십시오. | sed 's @ // @ / @'

b) 'brew install findutils'를 사용하여 GNU의 findutils를 설치 한 다음 'gfind'를 직접 사용하거나 'find'를 'gfind'에 별칭으로 사용하거나 / usr / local / opt / findutils / libexec / gnubin을 경로에 추가하십시오 ( GNU findutils ''locate ','updatedb '및'xargs ').

c) 처음에는이 문제 (및 다른 수천)가 없었을 적절한 GNU / Linux OS로 전환하십시오. :피


1
에 추가 set mark-directories off하십시오. inputrc그리고 당신은 잘 지내요. 그 오래된 BSD 사람들 중 하나에서.
fd0

@ fd0 그러면 같은 이름을 가진 dirs와 파일을 구별 할 수 없습니다. 그것은 조금 crufty가 여기에 떠들썩한 파티 또는 작성한 Readline 아니다 BSD의 발견입니다
월 규 Peblik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.