我正在尝试使用find
列出所有已安装的应用程序。 find /Applications -name "*.app"
。但是这会返回一个列表:
/Applications/Firefox.app/Contents/MacOS/crashreporter.app
/Applications/Firefox.app/Contents/MacOS/plugin-container.app
/Applications/Firefox.app/Contents/MacOS/updater.app
使用find /Applications -name "*.app" -exec basename {} \;
会返回如下列表:
DVD Player.app
FaceTime.app
Firefox.app
这是更好的,但我想要列出的是应用程序及其存储的目录:/Applications/Firefox.app
如何在不列出应用程序本身的子目录的情况下列出所有已安装的应用程序?
答案 0 :(得分:1)
-type d
此处,-maxdepth 1
将搜索限制为仅限目录,而private Dictionary<string, Func<IniConfig, object>> typeMapping = new Dictionary<string, Func<IniConfig, object>>();
typeMapping["MB"] = ProcessMB;
public object ProcessMB(IniConfig file)
{
return null;
}
object iif(bool expression, object truePart, object falsePart)
{ return expression ? truePart : falsePart; }
FilesToProcess.ForEach(x => iif(typeMapping.ContainsKey(x.ExtractType), typeMapping[x.ExtractType](x), Error(x)));
则限制&#34;递归级别&#34;
答案 1 :(得分:1)
询问System Profiler
system_profiler SPApplicationsDataType
它只为路径提供了更多信息,也可选择xml格式化
system_profiler SPApplicationsDataType -xml
答案 2 :(得分:0)
尝试
find /Applications -printf "%f\n"|grep "\.app"
以.app命名为
find /Applications -printf "%f\n"|grep "\.app"
答案 3 :(得分:0)
这将找到所有应用程序,即使在子目录中:
find \
/Applications \
-iname "*.app" \
-type d \
| grep -v '\.app.*\.app'
-type d
表示查找目录,因为应用程序实际上是目录。
grep -v
表示过滤掉匹配的条目......
将\.app.*\.app
与正则表达式匹配,意味着“ .app列出两次”