如何获得所有已安装应用程序的完整列表?


15

使用OSX 10.8.4,我很难找到Mac上安装的所有软件应用程序的完整列表。当然,Launchpad仅显示已创建应用快捷方式的列表,不包括未创建的快捷方式的列表。我还尝试Option在Apple菜单中按住键将其更改About This MacSystem InformationSoftware-->Installations但这仍然不是完整列表。

如何获得所有已安装应用程序的完整列表?


1
OS X的问题在于,除了Mac App Store中的应用程序或Adobe,Microsoft等公司的其他应用程序之外,您通常不会“安装”大多数应用程序。大多数应用程序只是您以ZIP或DMG文件格式下载的内容,然后拖放到“应用程序”文件夹中。该“应用程序”文件夹几乎是应用程序始终位于其中的位置,并且您将获得完整的列表。
大卫,

8
您在这里要问的问题有一个微妙的复杂性,那就是:什么是“应用程序”?您是否正在寻找.app系统上的所有捆绑包?还是您想要用户可以执行的所有操作的列表?
伊恩·C

2
如果您打算添加打算使用此应用程序列表进行的操作,我很想知道答案是否会更好地满足您的需求,因为应用程序的概念很模糊并且易于解释。
bmike

1
我不是OP,但是我的定义是将作为的所有参数的列表open -a
马克·里德

Answers:


19

尝试:关于本Mac>更多信息>系统报告>软件

在此处输入图片说明

不仅是“安装”,其他的也可能给您一些信息。


3
对我来说,“应用程序”选项卡有一个更好的列表,它花了一秒钟才出现。
ma11hew28 2014年

14

如果您只是在寻找扩展名为.app的应用程序列表,请启动终端并运行

   find / -iname *.app > ~/applications.txt

(最终)将为您提供相当全面的应用程序列表,这些列表将写入到您的主文件夹中的文本文件“ applications.txt”。


这将递归显示已安装的应用程序内部使用的所有捆绑软件,而这可能不是操作者想要的。因此,与其算作Xcode.app“我已安装的一个应用程序”,不如find返回242(在我的安装中)。即使是简单的安装,ls /Applications也可以提供更准确的安装数量。
minusf

12

在命令行中,尝试system_profiler(8)

> system_profiler SPApplicationsDataType

这是显示Safari的摘录:

Safari:

  Version: 7.0.2
  Obtained from: Apple
  Last Modified: 2/25/14, 3:44 PM
  Kind: Intel
  64-Bit (Intel): Yes
  Signed by: Software Signing, Apple Code Signing Certification Authority, Apple Root CA
  Location: /Applications/Safari.app
  Get Info String: 7.0.2, Copyright © 2003-2014 Apple Inc.

system_profiler也可以输出为易于解析的XML(plist(5)格式)。为此,请使用-xml参数。这是此格式的更新的Safari片段:

<dict>
    <key>_name</key>
    <string>Safari</string>
    <key>has64BitIntelCode</key>
    <string>yes</string>
    <key>info</key>
    <string>10.0, Copyright © 2003-2016 Apple Inc.</string>
    <key>lastModified</key>
    <date>2016-06-30T22:14:21Z</date>
    <key>obtained_from</key>
    <string>apple</string>
    <key>path</key>
    <string>/Applications/Safari.app</string>
    <key>runtime_environment</key>
    <string>arch_x86</string>
    <key>signed_by</key>
    <array>
        <string>Software Signing</string>
        <string>Apple Code Signing Certification Authority</string>
        <string>Apple Root CA</string>
    </array>
    <key>version</key>
    <string>10.0</string>
</dict>

附带条件是什么?如果我只是将.app目录拖到中/Applicationssystem_profiler该怎么办才能看到它?
ghoti

1
spotlight必须启用@ghoti 索引,并且Spotlight必须已经发现了新应用程序并对其进行了索引。 system_profiler如果禁用了索引编制,则返回一个空的结果。
minusf

3

这些命令在我的安装中列出了相同的应用程序:

mdfind kMDItemContentTypeTree=com.apple.application-bundle -onlyin /
system_profiler SPApplicationsDataType|sed -n 's/^ *Location: \(.*\)/\1/p'

两者都缺少应用程序和框架捆绑包内的一些应用程序捆绑包。

lsregister 在其他应用程序捆绑包中包含更多应用程序,但其中还包括已删除的应用程序和Time Machine卷上的应用程序:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump|awk '/^bundle\tid/{getline;sub(/^\tpath: */,"");print}'

这会在其他捆绑软件中找到更多应用程序,但与没有.app扩展名的应用程序不匹配:

sudo find -x / -type d -name \*.app

1

从OP的问题尚不清楚他/她是在寻找简单的答案还是艰难的答案。将几乎所有应用放入便捷列表的方法是:

  1. 开放终端
  2. 输入ls /Applications以获取简单的字母列表,或ls -l /Applications获取更多信息:

    Ewans-Retina-MacBook-Pro:Applications ewan$ ls /Applications
    
    1000 OpenType Fonts.app        Garmin MapInstall.app    ScreenFlow.app
    1Password.app                  Garmin MapManager.app    Sequel Pro.app
    A Better Finder Rename 8.app   Garmin WebUpdater.app    Server.app
    

尽管这样可以得出一个令人满意的数字,但是它将丢失例如下的所有系统实用程序Utilities/,以及安装在子文件夹中的所有其他程序(例如Intel Power Gadget
minusf

1

打开终端,然后输入以下命令sudo find / -iname *.app 。与“ binarybob”的答案相同,但是使用sudo可以访问并列出一些没有管理员权限就无法使用的文件夹。如果您的帐户是管理员帐户,系统将询问您的密码,您将获得sudo“权限”的好处。

例如,find / -iname *.app我得到430行,而sudo find / -iname *.app我得到432行。这是我计算机上的一个示例,无论您的命令如何,结果都是一样的。


然而,这也将得到备份,如果这些磁盘安装如时间机器磁盘
user151019

1

使用plistbuddy,您可以获得一些信息,并通过它解析所需的内容。

这将获取所有已安装的应用程序/实用程序及其版本号,并将其放入文本文件中。

#!/bin/sh
(
    for i in /Applications/*.app
     do
         Printf "$i \t" | cut -c15-1000
      /usr/libexec/plistbuddy -c Print:CFBundleShortVersionString: "$i"/Contents/info.plist
        done

    for u in /Applications/Utilities/*.app
     do
         Printf "$u \t" | cut -c25-1000
      /usr/libexec/plistbuddy -c Print:CFBundleShortVersionString: "$u"/Contents/info.plist
    done
)   >${USER}Applist.txt

怎么运行呢?请在您的答案中添加更多步骤。
Hemang '17

0
  1. LaunchPad应该显示/ Applications中的所有应用程序;他们不必创建“快捷方式”即可显示在此处。
  2. 您可以直接在/ Applications和/ Applications / Utilities中查找。
  3. 系统信息在侧栏中有一个“软件”>“应用程序”部分,它将显示一个更完整的列表,包括存储在意外位置的应用程序(我认为它是使用Spotlight来查找它们的)。


0

我知道这个问题是在4年前提出的,给出了几个答案,每个答案都试图通过GUI或CLI来解决问题,但没有一个是完整的。

昨天在我公司,要求每个macOS用户提供:

在其OS X / macOS系统上安装的用于软件审核的所有应用程序的列表

为了使过程一致,轻松和完整,每个人都在终端中运行了相同的命令

ls -l /Applications | open -ef &&  ls -l /usr/local/bin | open -ef

上面的命令将打开一个默认的文本编辑器2个文件所有已安装的应用程序列表 ,以及 所有“的名单可执行文件这应该也可以被视为应用程序。

我认为这为给定问题提供了最全面的解决方案。它很快并且可以完成工作。

为了提供更详细的答案,让我们最后遍历所有命令和参数,以便对那些害怕使用Terminal的人来说一切都清楚。

ls命令仅列出目录内容。在这种情况下/Applications,以及/usr/local/bin-这个位置是程序,一个普通用户都可以运行。

参数-l以“长格式”显示列表。有关“长格式”的更多信息,请参见此处

接下来,我们有一个管道符号 |。它在命令行上将两个程序分开,以便接下来可以在另一个程序中打开列出的输出。在这种情况下,使用open命令。

open命令仅打开文件和目录,但结合了-ef

  • -e 导致打开文件 /Applications/TextEdit
  • -f 从标准输入中读取输入,并在默认文本编辑器中打开结果。

最终,两个列表的组合被粘合在一起,&&并允许一次执行多个命令,因此最终我们得到一个“一行”终端命令。

在此处输入图片说明

希望这会有所帮助并提供详细说明。


应用程序d我不必进入/ applications
user151019 '19

0

尝试在终端(/Applications/Utilities/Terminal.app)中运行此命令:

mdfind "kMDItemContentType == 'com.apple.application-bundle'" -onlyin $scope

# $scope is your search range
# this command will only search all the applications under the given scope if -onlyin is specified

这是一个搜索查询kMDItemContentType == "com.apple.application-bundle",它使用给定的元数据谓词搜索项目,它将为您提供.app给定范围内所有应用程序捆绑包()的完整列表,或者如果-onlyin未提供,则全局范围(包括外部/网络驱动器)将为用过的。




-4

应用程序文件夹..只需进入应用程序文件夹


3
可以将应用程序安装在Applications文件夹之外。
伊恩·C

-5

finder>应用程序。就那么简单


如此简单,它会错过任何安装在/Applications...中的应用程序
nohillside
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.