Опираясь на ответ из theY4Kman
, вот как это сделать без Python:
dbus-send --type=method_call --dest=org.xfce.Thunar /org/xfce/FileManager org.xfce.FileManager.DisplayFolderAndSelect string:"/home/user/Downloads" string:"File.txt" string:"" string:""
Единственное предостережение заключается в том, что вам нужно разделить путь к папке и имя файла.
Вы получаете один идентификатор, скажем, id1
, а затем извлекаете все строки, соответствующие этому идентификатору, в matches
. Затем вы извлекаете все строки , не соответствующие , в missing
.
Для следующего идентификатора id2
вы затем добавляете строки, соответствующие этому идентификатору, к matches
, а строки, не соответствующие id2
, к missing
.
Теперь missing
содержит все строки, не содержащие id1
, затем все строки, не содержащие id2
. Обратите внимание, что строка, содержащая id1
, но не содержащая id2
, будет находиться в missing
из этой второй итерации вашего цикла.
Вместо этого учитывайте все идентификаторы одновременно:
grep -f query_ids -Fw my_file >matches
grep -f query_ids -Fw -v my_file >missing
Здесь я предоставляю grep
шаблоны из query_ids
с помощью -f
. Я прошу grep
рассматривать строки в query_ids
как строки запроса (-F
, т.е. не регулярные выражения ), и сопоставлять их в my_file
как целые слова (-w
, чтобы id2
не совпадает напримерid23
).
Первая команда извлечет все строки, содержащие любой из идентификаторов. Вторая команда извлечет все строки, которые не содержат ни одного из идентификаторов.
Здесь нет никакой необходимости в цикле.