Извлеките имя файла из команды находки

Несколько месяцев назад у меня была точно такая же проблема, и в конце концов я просто написал инструмент, чтобы сделать это за меня. Когда я увидел это и обнаружил, что у кого-то другого был такой же зуд, я убрал его, чтобы кто-то другой, кроме меня, мог на самом деле заставить его работать, и закончил мой список дел. Теперь код готов: https://github.com/mwh/dragon

Чтобы получить его, запустите

git clone https://github.com/mwh/dragon.git
cd dragon
make

, и вы получите автономный исполняемый дракон - вы можете переместить его куда угодно. make install поместит его в $HOME/.local/bin.

В любом случае, вы можете:

dragon *.jpg

получить простое окно с перетаскиваемыми кнопками для каждого из этих файлов:

Screenshot of dragon showing a few files

Вы можете перетащить любой из них в браузер, файловый менеджер, редактор или в любое другое место, которое говорит по стандартному перетаскиваемому протоколу.

Если вы хотите пойти другим путем и перетащить вещи в , используйте --target - они будут напечатаны на стандартном выводе или доступны для повторного перетаскивания, если вы используете --keep также.


Для сборки вам понадобится Си-компилятор и заголовки разработки GTK+ 3 - если вы на Arch, то вы получите их просто установив GTK+, но на других дистрибутивах вам может потребоваться apt-get install build-essentials libgtk3-dev или yum установить gtk3-devel или аналогичный сначала. Кроме того, она полностью автономна, не содержит составных библиотек или чего-либо подобного, и вы можете просто поместить исполняемый файл туда, куда захотите.

Мой вариант использования - это в основном одноразовое перетаскивание всего лишь нескольких файлов (обычно только одного), без особой заботы о том, как они появятся, так что если это не совпадает с тем, что вы хотите, то Dragbox (которого я не видел до недавнего времени) все равно может быть лучше для вас. Буквально вчера я добавил поддержку использования его в качестве перетаскивающего устройства, так что эта часть с моей стороны не принесла много пользы. В остальном, однако, я использую ее успешно уже некоторое время. Есть и другие режимы и опции, описанные в файле readme.

.

1
24.06.2014, 18:08
1 ответ

Я подозреваю, что вы имеете в виду, что хотите, чтобы имя файла было включено в вывод uuencode :

begin 644 path/to/the/file.pdf.Z
%=&5S=`H`
`
end

не включать путь / к / .

Для этого вы хотите, чтобы второй аргумент, переданный в uuencode , был базовым именем. Для этого вам нужно сделать это так:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -exec sh -c '
  for file do
    uuencode "$file" "$(basename "$file")"
  done' sh {} +

Или, если ваш find поддерживает -execdir :

find "$dir" -ctime -1 -type f -name "abc*pdf*" -execdir uuencode {} {} \;

Поддерживается ли ваш find -printf , вы могли бы сделать это с помощью:

find "$dir" -ctime -1 -type f -name "abc*pdf*" -printf '%p\0%f\0' |
  xargs -r0n2 uuencode
3
27.01.2020, 23:28

Теги

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