我需要 zenity 的帮助来列出文件

我需要 zenity 的帮助来列出文件

我有命令

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

相关内容