스마트 폴더 필터 "포함하지 않음"


13

스마트 폴더 제외 폴더

궁극적 으로이 find 명령의 결과가 스마트 폴더가되기를 바랍니다.

기준은 그렇게 복잡하지 않습니다.

  • 이름은 "README.md"여야합니다
  • 형식은 파일이어야합니다
  • 경로는 "node_modules"를 포함하지 않아야합니다

find /Users/me/Documents -type f -name README.md -not -path "*/node_modules/*"

문제는 스마트 폴더 기준 운영자 목록에 does not contain옵션 이없는 것 같습니다 .

사용 가능한 옵션은 다음과 같습니다.

  • 성냥
  • 포함
  • ~로 시작하다
  • 로 끝나다
  • 이다
  • 아니다

이것을 달성 할 수 있습니까? 그렇다면 어떻게합니까?

편집 1

옵션 키를 누르면 스마트 폴더 검색 조건에 부정 조항을 추가 할 수 있지만 node_modules 폴더를 성공적으로 제외 할 수없는 것으로 나타났습니다. 어떤 기준을 사용해야할지 확실하지 않지만 내가 시도한 기준 중 어느 것도 효과가없는 것 같습니다.

  • 문서 컨테이너
  • 폴더 이름 포함
  • 폴더 이름

나는 이것을 다음 연산자와 결합하려고 시도했다.

  • 포함
  • 성냥

다음 용어로

  • node_modules
  • node_modules

와일드 카드 검색을 지원하는 경우

위의 필터, 연산자 및 용어의 모든 조합을 시도했습니다.

주제에 대한 문서가 너무 나쁩니다.

여기에 이미지 설명을 입력하십시오


2
해결책을 찾았습니까?
놓으신

답변:


2

kMDItemPath가 필요한 것을 수행 할 수없는 것 같습니다.

검색 결과에서 스포트라이트 없음 검색에 대해 kmkm

몇 가지 가능한 대안이 여기에 설명되어 있습니다.

폴더에서 파일 및 폴더를 사용하여 파일 위치를 찾는 방법


1
고맙지 만 이미 관심있는 파일을 검색하는 명령 줄 기능이 있으며 스포트라이트 검색을 수행하지 않고 스마트 폴더를 만들고 있습니다. mkdItemPath의 한계를 극복했습니다.
km6zla

스포트라이트 검색 및 스마트 폴더는 동일한 내부 메커니즘을 사용합니다. kMDItemPath는 이러한 사용자 인터페이스 중 하나에서 작동하지 않습니다.
GraniteRobert

1

해결 방법이 있지만 그리 예쁘지 않습니다. 그러나 지정한 기준을 사용하여 하나의 폴더에서 README에 액세스하고 어디에서 왔는지에 대한 개념을 가지고 있다면 목적에 부합합니다.

아이디어는 쉘 스크립트를 사용하여 올바른 파일을 찾은 다음 한 디렉토리의 각 파일에 대한 별명을 수집하는 것입니다. 그런 다음 별칭의 이름을 변경하여 원본 파일이 속한 상위 디렉토리를 알려줍니다.

이를위한 Applescript는 다음과 같습니다. 보기에는 좋지 않지만 스크립트 편집기에 붙여 넣어 컴파일하면 논리를 볼 수 있습니다.

--- Set up the name of the folder to contain search results
set myFolder to POSIX file "/Users/me/SmartFolder"

--- Clear the folder of contents. Then we will see only the results of an updated search
tell application "Finder"
    display dialog "WARNING. This will delete all files below " & (POSIX path of myFolder) & " . Are you sure you want to continue?"
    delete (every item of folder myFolder)
    --- alternatively, if you want to keep your script in the same folder, replace the line above with
    --- delete ((every item of folder myFolder) whose name does not end with ".scpt")
end tell

--- The shell command that is doing all the searching
set FileList to do shell script "find /Users/me/Documents -type f -name README.md -not -path '*/node_modules/*'"

--- The rest of the script takes each file and makes an alias in our folder containing search results. The aliases are renamed according to "ParentDirectory_filename"
set FileList to paragraphs of FileList
repeat with CurrentFile in FileList
    set ASCurrentFile to POSIX file CurrentFile
    set PathList to words of (ASCurrentFile as string)
    --- Make the new name include the Parent Directory and file name
    set NewName to (item -2 of PathList) & "_" & (item -1 of PathList)
    tell application "Finder"
        make new alias file at myFolder to ASCurrentFile
        --- We need to save the name/location of the new alias file before we can try to rename it
        set NewAlias to result
        set i to 1
        repeat
            try
                --- Try to rename the alias. Won't work if there's already an alias with the new name
                set name of NewAlias to NewName
                exit repeat
            on error
                --- Append a number to the alias. Increase the number for more duplicates
                if i is not equal to 1 then
                    set NewName to text 1 thru -3 of NewName
                end if
                set NewName to NewName & " " & i
                set i to (i + 1)
            end try
        end repeat
    end tell
end repeat

이것이 효과가 있는지 모르겠습니다. 그것으로도 +1. readme 폴더를 만들기 위해이 멀리 가지 않을 것입니다.
km6zla
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.