С помощью инструментов GNU вы можете сделать что-то вроде:
find . -regextype posix-extended \
-regex '.*/[a-zA-Z]+[0-9]\.[0-9]{2}_[0-9]\.[0-9]{4}\.end' -print0 |
awk -v RS='\0' -F . '
NR == 1 || $(NF-1) < min {files=$0; min = $(NF-1); next}
$(NF-1) == min {files = files "\n" $0}
END {if (NR) print files}'
Это пример общего шаблона: мы печатаем список совпадающих файлов с разделителями NUL (поскольку NUL - единственный символ, который не может встречаться в пути к файлу. ) и обработайте этот вывод с помощью awk
, где разделитель записей установлен на NUL (хотя не все реализации awk
поддерживают это).
Разделитель полей установлен на .
. NF
- это количество полей, поэтому $ (NF-1)
- это последнее предпоследнее поле. awk
находит наименьшее число, сравнивая его с последним известным значением, и сохраняет соответствующие файлы в переменной files
awk
.
Поскольку мы храним список, разделенный новой строкой, а не NUL, он предназначен только для вывода пользователя. Если вы хотите надежно выполнить постобработку, вы должны вместо этого использовать NUL ( "\ 0"
в awk).
Для меня решением было добавитьz:
ближе к концу командной строки :
Open=wine ~/PDFXEdit6_Portable/PDFXEdit.exe z:%f ↑↑
Я тестировал PDF X -Редактор изменений в ярлыке, и это тоже сработало:
env WINEPREFIX="/home/jim/.wine" wine-stable C:\\windows\\command\\start.exe /Unix /home/jim/.wine/dosdevices/c:/users/jim/Start\ Menu/Programs/Tracker\ Software/PDF-XChange\ Editor.lnk z:%f
Краткий ответ.
Вы используете % f
, но имя файла, которое вы хотите передать, хранится в переменной $ {MC_EXT_FILENAME}
.
Длинный ответ.
Как открывать / просматривать файлы PDF с помощью Midnight Commander + Wine + PDF-XChange Viewer / Editor Portable
Примечание: я предполагаю, что переносимые приложения Windows хранятся в "~ / MyApps / *"
файл расширения
для редактирования: F9
-> Команда -> Редактировать файл расширения pdf
Введите закомментируйте следующие строки (только для резервной копии):
# PDF
# type / ^ PDF
# Open = / usr / lib / mc / ext.d / doc.sh open pdf
# View =% view {ascii} /usr/lib/mc/ext.d/doc.sh view pdf {{ 1}}
добавьте / замените следующие строки:
# PDF
type / ^ PDF
Open = ~ / MyApps / start-pdf-mc.sh {{1} } View =% view {ascii} ~ / MyApps / start-pdf-mc.sh
сохраните изменения и выйдите: : w q Введите
, чтобы создать файл ~ / MyApps / start-pdf-mc.sh
со следующим содержанием:
#! / Bin / bash
Filename = "z : "$ {MC_EXT_FILENAME // \ // \\} {{ 1}} App = `eval wine" ~ / MyApps / PDF-XChange_Viewer / PDFXCview.exe "" '$ Filename' "> / dev / null 2> & 1 &` {1}} $ App
Примечание: вы можете создать его в / usr / lib / mc / ext.d / *. sh
(вместо ~ / MyApps /
, как я).
start-pdf-mc.sh
исполняемый файл (используйте chmod
). Описание файла start-pdf-mc.sh
имя файла, которое мы пытаемся открыть, хранится в $ {MC_EXT_FILENAME}
{ {1}} переменная
при использовании Wine, используйте букву диска z:
преобразовать путь к файлу в стиле Linux ( /
) в стиль Windows ( \
) со следующим
: $ {MC_EXT_FILENAME // \ // \\}
, чтобы передать его в качестве аргумента в
PDF-XChange Viewer позже
> / dev / null 2> & 1
и &
необходимы для отбрасывания вывода программы и запуска ее в качестве фонового процесса, в противном случае (если вы опустите это) вы не сможете использовать Midnight Commander до тех пор, пока вы закрываете PDF-XChange Viewer,
что явно нежелательно.
Teste d со следующим программным обеспечением
Linux Debian 32-бит
GNU Midnight Commander 4.8.13
wine-1.6.2
PDF-XChange Viewer v2.5.316.1
И
Linux Debian 32-бит
GNU Midnight Commander 4.8.13
wine-1.6.2
PDF-XChange Editor v6.0.321.0
Обновление в соответствии с вашим комментарием
Похоже, что все еще есть какая-то ошибка в пути к файлу ... Попробуем исправить.
Откройте проблемный PDF-файл с помощью PDFXChange Editor (как вы обычно это делаете, НЕ с Midnight Commander)
Файл -> Копировать полное имя файла
Вставьте его в любой текстовый файл (только для дальнейшего использования)
Закройте редактор PDFXChange
Откройте тот же файл с помощью Midnight Commander + PDFXChange Editor (который показывает ваше сообщение об ошибке)
Сравните, идентичны ли пути к файлам (тот, который вы только что вставили для справки и тот, который указан в вашем сообщении об ошибке)
Если пути НЕ идентичны - исправьте путь соответственно в файле .sh ИЛИ вставьте их сюда, чтобы я мог помочь (просто замените свое имя пользователя в пути на
для безопасности)
Кроме того, это маловероятно, НО, если пути ОДИНАКОВЫЕ, может быть проблема с разрешениями, установленными для файла, который вы пытаетесь открыть. Таким образом убедитесь, что ваши права доступа к файлам как минимум:
sudo chmod 644 your-file-name-here.pdf
Update 2
Возможно получить доступ ко всем файлам со всех дисков, включая те, которые НЕ находятся в ~ / *
(домашний каталог пользователя) или даже хранятся на других жестких дисках, просто используя Z: \
(не используя H: \
] и другие буквы дисков).
Проверьте отображение дисков в Wine:
запустите в терминале
$ winecfg
откройте вкладку Диски
, там должны быть следующие записи по умолчанию
Письмо | Сопоставление дисков
C: | ../ drive_c
Z: | /
Насколько мне известно, любой путь начинается с /
(для любого файла на любом жестком диске, доступном в Linux) и, таким образом, к нему можно получить доступ с помощью Z: \
из-за отображения, описанного выше.
Например, приведенная выше конфигурация позволяет мне получить доступ к файлу PDF
/ home / /*.pdf
( ~ / *. Pdf
), если он находится в домашнем
каталоге пользователя / media / /*.pdf
OR / mnt / /*.pdf
, если он находится на каком-то внешнем диске или жестком диске, который я смонтировал; (например, в Windows к тому же диску можно получить доступ, используя H: \
)Сопоставление дисков, однако, будет другим вопросом, связанным с вашей настройкой. : -)
Кстати, еще одна вещь, которую нужно проверить . Сопоставляется ли домашний каталог пользователя ~ / *
с папкой MyDocuments
MyDocuments
wine
?
$ wine explorer
Мои документы
~ / *