2010-12-28 17:42:34 +0000 2010-12-28 17:42:34 +0000
133
133

如何在Mac OSX终端中通过文件名找到一个文件?

我想在我的Macbook上找到一个文件,文件名为:abc.dmg。我试着使用 spotlight,但它没有找到它。

在Mac OSX终端上使用find命令查找文件时,正确的语法是什么?

答案 (7)

182
182
182
2010-12-28 17:45:50 +0000

在其最简单的形式中,find只需要一个参数:路径。在其实际有用的形式中,它取的是路径,然后是缩小标准。

因此,你需要:

  • find (程序)
  • / (路径),以及
  • -name abc.dmg (标准)。
26
26
26
2016-10-27 14:11:10 +0000

比如说find . -name '*.csv'对我来说,用通配符就可以。OP也可以用find . -name '*.dmg'来检查他的当前目录,假设他在/中,也可以用&007来检查他的当前目录。

10
10
10
2010-12-28 19:21:39 +0000

mdfind命令使用Spotlight数据库 http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html

6
6
6
2010-12-28 17:44:14 +0000

你可以使用locate命令。

locate abc.dmg
3
3
3
2010-12-28 22:53:12 +0000

最简单的方法(我相信你肯定已经试过了,但是嘿嘿,让我把它加到线程中去吧)是在任何查找器窗口的右上角的搜索框中输入abc.dmg,然后在搜索栏的选项中选择 “文件名"。 dmg可能不在这些目录中。

如果我说错了,请纠正我,但我认为查找命令需要知道输出什么:

find / -name abc.dmg -print

……….应该将任何结果打印到终端(包括权限错误)。

2
2
2
2018-02-09 04:28:07 +0000

你可以使用下面的命令行函数来快速找到并打开相关文件。我发现这比在 spotlight 窗口中输入长长的查询字符串要容易得多。

~/.bash_aliases 中添加以下函数。要在文件名中任意位置搜索带单词、派和2016的文件,请做

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

不需要在查询前加上或附加source ~/.bash_aliases作为查询模式,*已经在查询的开头和结尾处标记了通配符条目。附加的'*$1*'是不区分大小写,并且忽略了二进制符号,例如,cd会同时返回Frédéric和FrEDeric。为了避免打开bash脚本或其他非文档文件,你可以通过附加的搜索属性来限制文件内容。有关使用其他搜索操作符的使用,请参阅 文件元数据查询表达式语法 https://ss64.com/osx/mdfind.html

0
0
0
2019-06-09 11:50:48 +0000

从/

sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt
cat ~/file-list.txt | grep abc.dmg

捕获磁盘上的每一个文件作为根目录,通过grep搜索整个硬盘:

cat ~/file-list.txt | grep -E "(\.dmg|\.jpg)"

使用正则表达式只显示.jpg和.dmg文件:

Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg

结果:

&001

…等。不幸的是,它也会捕获所有挂载的磁盘,所以最好把那些时间机器的磁盘弹出,因为它们有很多链接。所以在另一个窗口中,我运行了watch tail -n 10 ~/file-list.txt,这让我看到了我的黑客程序中的情况。