Я нуждаюсь в помощи с zenity для списка файлов

У меня есть команда

sudo find / -size +450M -exec ls -lhGSr {} \;

найти и перечислить файлы, больше, чем 450M. Я знаю, как отобразить вывод в zenity, но я хотел бы выбрать путь (любой) в выводе zenity, затем дважды щелкните, и этот путь открыт в Файловом менеджере (в моем случае в Thunar). Как я могу достигнуть этого?

0
задан 16 February 2020 в 10:31

2 ответа

Хотя возможно сделать это, необходимо иметь в виду, что это будет напрасно тратить время, смотря в каталогах такой как /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 выполняется как Ваш обычный пользователь (графические приложения не должны быть запущены как корень). Когда первые концы строки Вы представлены диалоговое окно Zenity. Так как необходимо предоставить каталог, который содержит выбранный файл как аргумент thunar, Я извлекаю его с dirname.

1
ответ дан 20 February 2020 в 22:52

В целом Вы создаете список выбора в zenity как в следующем примере, где файлы в текущей папке перечислены:

zenity --list --column="Files" $(ls)

Эта команда отобразит zenity диалоговое окно с выводом ls команда. Когда объект выбран, он печатается к стандарту.

Можно объединить команды, таким образом, что меры непосредственно приняты по выводу zenity как следующее:

xdg-open $(zenity --list --column="Files" $(ls))

Специально для XFCE можно предпочесть использовать exo-open вместо этого xdg-open.

0
ответ дан 20 February 2020 в 22:52

Другие вопросы по тегам:

Похожие вопросы: