I downloaded a repository from Bitbucket.org as a zip file and unzipped it using iZip to my Mac. Xcode found many compile errors because the zip or unzip did not preserve a
Apple has conflated alias and symlink. I don't know how to do this at the command line other than using ls.
ls -la | grep ">"
The following Objective-C function would find the target.
#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];
}
In Terminal:
This should find all aliases
(Apple aliases)
mdfind "kMDItemKind == 'Alias'" -onlyin /path/of/your/repo
For finding all symlinks
(symbolic links) you can use:
ls -lR /path/of/your/repo | grep ^l
To only show symlinks in current directory:
ls -la | grep ^l
If you want to view the full path of symlinks:
find /path/of/your/repo -type l