2014-01-15 1 views
5

Bitbucket.org의 저장소를 zip 파일로 다운로드하고 iZip을 사용하여 Mac에 압축을 풉니 다. zip 또는 unzip이 별칭을 올바르게 보존하지 않았기 때문에 Xcode는 많은 컴파일 오류를 발견했습니다. 그래서 hg를 사용하여 저장소를 복제하고 별칭을 보존하고 Xcode 컴파일을 수행했습니다. 내 폴더에있는 모든 별칭을 찾아서 대상으로 바꿔서 나중에 zip이 작동하도록하고 싶습니다. 나는 많은 검색을했는데 Mac Finder 유틸리티 나 bash find 명령으로 어떻게 찾을 수 있는지를 발견 할 수 없습니다. Finder -> 모든 내 파일 - 검색 -> 종류 -> 기타 - 별칭을 사용해 보았는데 약 100 개의 별칭을 찾았지만 거기에있는 내 로컬 저장소에는없는 별칭을 찾습니다. 어떻게 든 내 모든 파일의 OSX 10.9.1 색인 목록을 다시 작성/업데이트해야합니까? find 명령에 OSX 별칭 파일 유형에 대한 플래그가 있습니까? Finder를 폴더로 이동 한 다음 파일 유형을 재귀 적으로 검색 할 수 있습니다 (내 모든 파일을 선택하지 않으면 검색 기준 옵션이 사라지는 것 같습니다). 또 다른 방법은 전체 Finder 목록의 내용을 인쇄하여 "종류"열을 표시 한 다음 그 내용을 기준으로 정렬하는 것입니다.Mac Finder를 사용하여 폴더의 모든 별칭을 나열하는 방법

mdfind "kMDItemKind == 'Alias'" -onlyin /path/of/repo 

mdfind처럼 보일 수도 있습니다. 그러나 검색 -> 종류 -> 기타 -> 별칭이있는 파인더 -> 모든 내 파일과 동일한 파일 만 찾습니다. 그 파일들과 나의 레포에있는 것들은 Finder에 의해 종류 "별칭"으로 나열됩니다. 나는 3 종류의 연결이있다 : 별칭, 상징 연결 및 단단한 연결이다는 것을 읽었다. mdfind 명령에 의해 발견되는 파일에 대한 ls 명령에 의한 목록은 다음과 같습니다

[email protected] 1 kenm staff 45100 Dec 25 2012 GTLDrive.h 

내가 찾고자하는 파일에 대한 ls 명령에 의한 목록은 다음과 같습니다

lrwxr-xr-x 1 kenm staff 24 Jan 14 21:38 Headers -> ./Versions/A/Headers 

파인더 둘 다 호출 "별칭"은 다르다고 생각합니다. 두 번째 유형의 별칭을 찾는 mdfind 명령 줄이 있습니까? 터미널에서

답변

6

:

이 모든 symlinks (심볼릭 링크)를 찾기위한

mdfind "kMDItemKind == 'Alias'" -onlyin /path/of/your/repo 

모든 aliases (애플 별칭)를 찾을 수 있어야 당신은 사용할 수 있습니다

ls -lR /path/of/your/repo | grep ^l 

에만 심볼릭 링크를 보여 현재 디렉토리 :

,210

당신이 심볼릭 링크의 전체 경로보기를 원하는 경우 애플은 별칭 및 심볼릭 링크으로 융합 한

find /path/of/your/repo -type l 
+0

감사합니다, l' L 'l. 내 편집이 여기에 맞지 않으므로 위의 질문을 귀하의 제안으로 수정했습니다. – KenM

+0

@KenM 아, 별칭이 아닌 기호 링크를 찾고 싶습니다. 나는 애플이 뚜렷이 다르다는 점을 애플이 분명히 밝히지 않는다는 것을 안다. 나는 내 대답을 업데이 트했습니다 :) –

+0

고마워, - 형 제가 일했습니다. – KenM

2

합니다. ls를 사용하는 것 외에도 명령 줄에서이 작업을 수행하는 방법을 알지 못합니다.

ls -la | grep ">" 

다음 Objective-C 함수는 대상을 찾습니다.

#include <sys/stat.h> 

NSURL *targetOfAlias(NSURL *url) { 
    CFErrorRef *errorRef = NULL; 
    CFDataRef bookmark = CFURLCreateBookmarkDataFromFile (NULL, (__bridge CFURLRef)url, errorRef); 
    if (bookmark == nil) return nil; 
    CFURLRef resolvedUrl = CFURLCreateByResolvingBookmarkData (NULL, bookmark, kCFBookmarkResolutionWithoutUIMask, NULL, NULL, NO, errorRef); 
    return CFBridgingRelease(resolvedUrl); 
} 

NSString *getTarget(NSString *fPath) { 
    NSString *resolvedPath = nil; 
    // Use lstat to determine if the file is a symlink 
    struct stat fileInfo; 
    NSFileManager *fileManager = [NSFileManager new]; 
    if (lstat([fileManager fileSystemRepresentationWithPath:fPath], &fileInfo) < 0) 
     return nil; 
    if (S_ISLNK(fileInfo.st_mode)) { 
     // Resolve the symlink component in the path 
     NSError *error = nil; 
     resolvedPath = [fileManager destinationOfSymbolicLinkAtPath:fPath error:&error]; 
     if (resolvedPath == nil) { 
      NSAlert *alert = [NSAlert alertWithError:error]; 
      [alert runModal]; 
      return nil; 
     } 
     if ([resolvedPath isAbsolutePath]) 
      return resolvedPath; 
     else 
      return [[fPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:resolvedPath]; 
    } 

    // Resolve alias 
    NSURL *resolvedUrl = targetOfAlias([NSURL fileURLWithPath:fPath]); 
    return [resolvedUrl path]; 
} 
+0

'ls -la | grep ">"'은'>'을 포함하는 파일 이름을 찾습니다. –

+0

True 파일 이름에서 리디렉션 기호를 사용할 정도로 어리석은 사람이라면'ls -la | grep "\ ->"\ – Milliways

+0

고마움, 밀리 웨이.grep을 사용하는 -la는 훌륭하게 작동했습니다. – KenM

관련 문제