mac如何查找文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mac如何查找文件?相关的知识,希望对你有一定的参考价值。

参考技术A

mac的文件总是默认保存到一个叫file的文件夹,这个文件夹到底在system中。

file其实就是文件夹的意思,相当于给保存到默认的文件夹里了,打开finder找最近文件就可以,所以我一般要保存都会手动更改路径。

macOS系统是苹果机专用系统,正常情况下在普通PC上无法安装的操作系统。苹果公司不但生产Mac的大部分硬件,连Mac所用的操作系统都是它自行开发的。

mac的文件:

可能很少人知道或用过「标签」,这对文件管理其实很有用。一个标签用一种颜色和一个标签名表示,你可以给任意位置任意格式的一个文件,或者文件夹添加一个标签。给文件(或文件夹)添加标签不会复制,也不会改变文件(或文件夹)的保存位置,只是给文件做了一个标记。

如何在mac的主目录中搜索具有特定扩展名的文件?

【中文标题】如何在mac的主目录中搜索具有特定扩展名的文件?【英文标题】:How to search files with specific extension in home directory of mac? 【发布时间】:2018-08-24 09:17:20 【问题描述】:

我想在 mac 目录中搜索带有 doc 扩展名的文件,就像我们使用搜索命令从 finder 中找到的一样。

我正在使用以下代码进行此搜索。但它只从下载目录中搜索。它不是从文档(查找器的文档目录,而不是应用程序)、桌面或主目录中的任何其他目录中搜索。

NSString *docsDir = NSHomeDirectory();
NSFileManager *localFileManager=[[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum =
    [localFileManager enumeratorAtPath:docsDir];

NSString *file;
while ((file = [dirEnum nextObject])) 
    strPath = [NSString stringWithFormat:@"%@/",NSHomeDirectory()];

    strPath = [strPath stringByAppendingString:file];
    NSLog(@"%@",strPath);

    NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:strPath error:nil];
    NSArray *pdfFiles = [dirFiles filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.pdf'"]];

    NSLog(@"%@",pdfFiles);

我已尝试将路径更改为

NSString *docsDir = [NSString stringWithFormat:@"/Users/%@/",NSUserName()];

来自

NSString *docsDir = NSHomeDirectory();

但是,同样的事情发生了。

我想在所有目录中搜索具有特定扩展名的文件,就像我们从 finder 中搜索一样,如下图所示。

【问题讨论】:

【参考方案1】:

您的应用程序不是沙盒化的吗(您可以通过选择项目然后选择功能来检查)?

我在沙盒应用程序和非沙盒应用程序中都运行了你的代码,但它运行良好......

为什么它不在沙盒应用程序中运行?

从沙盒应用程序中,您无法访问桌面等内容的规则是,

从沙盒应用程序中,您可以访问下载目录

但是

enumeratorAtPath: 不遍历链接 - 在 Library/.../Data 目录中,您从 NSHomeDirectory() 获得的文档,Downloads 是一个链接,因此您只能访问您的 Download 文件夹的第一级.

@"/Users/%@/",NSUserName() 将为您提供“真正的”用户文档目录,但由于您的应用已被沙盒化,因此您将无法通过它进行枚举。

看起来我的假设似乎几乎可以解释您观察到的所有症状。

【讨论】:

【参考方案2】:

要像 Finder 那样进行搜索,请使用 MSMetadataQuery。这是 Spotlight 背后的技术:

https://developer.apple.com/documentation/foundation/nsmetadataquery

至于沙盒,MetadataQuery 返回结果,然后您必须请求用户授予读取这些文件的权限。

【讨论】:

以上是关于mac如何查找文件?的主要内容,如果未能解决你的问题,请参考以下文章

在Mac 中使用 locate 查找文件

批量查找和替换Mac OS中的文件

如何按文件类型递归查找文件并将它们复制到目录?

苹果电脑如何找文件位置

Duplicate File Finder Remover for Mac(重复文件查找软件) v1.2.5569中文

如何从 OTF、TTF 文件中查找字体版本