크고 중첩 된 디렉토리 구조에서 검색하기 위해 find 명령을 사용합니다.
결과 출력에는 때때로 이중 슬래시 (//)가 포함됩니다.
예 ( “다운로드”후) :
#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
처음에는 현재 작업 디렉토리를 표시한다고 생각했습니다. 그러나 그렇지 않습니다.
이 이중 슬래시의 의미는 무엇입니까?
일반적으로 결과를 클립 보드에 복사하고 파인더로 변경합니다. 그런 다음 “shift”+ “command”+ “g”를 입력하고 경로 (파일까지)를 상자에 붙여 넣습니다. 포함 디렉토리가 열리도록
잘 작동합니다. 그러나 이중 슬래시는 수동으로 제거해야합니다.
따라서 어떻게 피할 수 있습니까?
답변
find
오히려 문자 그대로입니다. “~ / Downloads /”내에서 검색하도록 지시하면 찾은 모든 것을 접두사로 사용합니다 (후행 슬래시 포함). 지정한 경로 끝에 불필요하고 관련없는 슬래시가 있기 때문에 출력에 불필요하고 관련없는 추가 슬래시가 생깁니다.
솔루션 : 검색 디렉토리에서 후행 “/”를 제거하십시오.
#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
#> find ~/Downloads -iregex ".*some.*"
/Users/michael/Downloads/subDirectory/some_file.pdf
답변
이 이중 슬래시의 의미는 무엇입니까?
이상한 오래된 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로 전환하십시오. :피