/usr/share/applications/,但如果你想找到系统上的每个.desktop文件,请运行以下命令:
find / -name '*.desktop'
或者
sudo updatedb
locate *.desktop
要查找路径或名称中包含“skrooge”的文件,请在命令中添加一个grep。
locate *.desktop | grep -iR "skrooge"
~/.local/share/applications 中的 *.desktop 文件会被重新加载。因此,请注销并重新登录。请注意,这些文件是特定于该用户的。 - akshay2000/usr/share/applications中的桌面文件会覆盖~/.local/share/applications中的条目吗?我正在尝试配置Firefox使用firejail,但每当浏览器更新时,如果我在/usr/share/applications/的桌面文件中进行编辑,我的修改都会被删除。 - Daniel.desktop文件存储在/var/lib/snapd/desktop/applications/目录中。 - Flimm.desktop文件存储在/var/lib/snapd/desktop/applications/目录下。 - FlimmXDG_DATA_DIRS环境变量中找到所有包含桌面文件的目录。这些*.desktop文件可以位于该变量中每个目录下的applications目录中。例如:
> echo $XDG_DATA_DIRS
/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
你可以使用这个bash脚本来列出系统使用的所有桌面文件(例如用于构建面板或应用程序菜单):
for p in ${XDG_DATA_DIRS//:/ }; do
find $p/applications -name '*.desktop'
done
似乎桌面文件还可以放置在另一个目录中,该目录不在XDG_DATA_DIRS变量中。
~/.local/share/applications*.desktop文件的完整脚本如下:
DATA_DIRS="$XDG_DATA_DIRS:$HOME/.local/share"
for p in ${DATA_DIRS//:/ }; do
find $p/applications -name '*.desktop'
done
我没有找到关于这个的任何文档,但是这里有一些关于这个环境变量的信息:https://unix.stackexchange.com/a/531664。
~/.local/share/applications 和 ~/var/lib/snapd/desktop/applications 对吧? - lrkwz/var/lib/snapd/desktop/applications - wjandreaXDG_DATA_DIRS 环境变量中找到了 /home/USERNAME/.local/share/applications 和 /var/lib/snapd/desktop/applications。 - Flimm/var/lib/snapd/desktop/applications/和/snap/下找到。
~/.local/share/applications和$XDG_DATA_DIRS,它们的查找顺序是怎样的? - wjandreafind / -iname "*desktop" -type f -not -path "/media*" -exec grep -il skrooge '{}' ';' 2> /dev/null
它更快,因为它不搜索挂载的数据文件系统,而且很可能桌面文件位于系统分区。
此外,它更有可能找到被接受答案中的命令所错过的内容。这是因为桌面文件不必保存应用程序名称。该命令实际上会搜索每个桌面文件中的文本。
find和grep命令,该命令应该可以独立于操作系统工作。但实际上,它导致命令崩溃并且没有输出任何内容。 - Rahat Zaman/usr/share/applications(大多数应用程序,需要管理员权限)~/.local/share/applications(个人应用程序)#!/bin/sh
# try to find the effective desktop file
# (there seems to be no documented standard for this)
use_if_desktop_file () {
if [ -r "$1" ] &&
[ "$(xdg-mime query filetype "$1")" = application/x-desktop ]; then
echo "$1"
exit
fi
}
for d in ~/.local/share/applications /usr/local/share/applications \
/usr/share/applications; do
use_if_desktop_file "$d/$1"
use_if_desktop_file "$d/$1.desktop"
done
# no file found
exit 1
locate -i "*skrooge*.desktop"。虽然Unity主要会在三个地方查找桌面文件。~/.local/share/applications、/usr/local/share/applications和/usr/share/applications。如果同一个命令在多个位置都有桌面文件,它将使用我列出的三个位置中最左边的那个。 - geirha/usr/share/applications/kde4/skrooge.desktop。谢谢。 :) - KOVIKOsnap软件包安装的桌面文件似乎会进入/snap/和/var/lib/snapd/desktop/applications/目录。 - Gabriel Stapleslocate *.desktop命令没有找到任何结果。可以使用find / -name '*.desktop' 2> /dev/null命令来抑制“权限被拒绝”的提示信息。 - Mark Jeronimus~/.local/share/applications是您放置桌面文件的位置,这样在活动窗口中可以找到它并将其添加到收藏夹(固定在甲板上)。 - WesternGun