我有命令
sudo find / -size +450M -exec ls -lhGSr {} \;
查找并列出大于 450M 的文件。我知道如何在 zenity 中显示输出,但我想在 zenity 输出中选择一个路径(任意),然后双击并在文件管理器中打开此路径(在我的情况下是在 Thunar 中)。我该如何实现?
答案1
尽管可以这样做,但您应该记住,查找诸如/sys
、/proc
和之类的目录会浪费时间/dev
,您可能不应该再去查找这些目录。
也就是说,这个小脚本可以完成你所要求的任务:
selectedFile=$(sudo find / -size +450M -exec sudo -u "$USER" zenity --list --column "Found files" {} +)
if [ -n "$selectedFile" ]; then
selectedFileDir=$(dirname "$selectedFile")
thunar "$selectedFileDir"
fi
find
以特权执行,但 Zenity 以您的普通用户身份运行(图形应用程序不应以 root 身份运行)。第一行完成后,您将看到 Zenity 对话框。由于您需要提供包含所选文件的目录作为 的参数thunar
,因此我使用 来提取它dirname
。
答案2
通常,您可以创建一个选择列表,zenity
如下例所示,其中列出了当前文件夹中的文件:
zenity --list --column="Files" $(ls)
此命令将显示一个包含命令输出的 zenity 对话框ls
。选择某项后,该项将打印到标准输出。
您可以组合命令,以便直接对输出采取行动,zenity
如下所示:
xdg-open $(zenity --list --column="Files" $(ls))
exo-open
特别是对于 XFCE,您可能更喜欢使用xdg-open
。