c50ae11ac4626b22190f2e26cd5deab6 Плюшки в контекстном меню Thunar

Предисловие.

С недавнего времени мне стало довольно часто нужно склеевать текстовые файлы, а так же удалять из этих файлов дубликаты.
Я долгое время делал всё из терминала, но когда юзаешь менеджер файлов, то это не удобно постоянно открывать терминал в нужной папке, и делать пару тех же самых команд.
А если что то делать лень — то тут есть место для автоматизации:D
Я использую файловый менеджер thunar, потому опишу как добаить пункты именно в его меню.

Удаляем дубликаты

Для удаления дубликатов я использовал следующюю команду.

cat %n | sort -u > out_%n

%n — это имя файла.
И так для того что бы нашу команду можно было запустить из контекстного меню откроем thunar, нужно перейти в главном меню в пункт «Правка», и там выбрать пункт «Настроить особые действия…».
После чего мы увидим вот такое меню:
a4866890f2c36f662fb975b481b3756d Плюшки в контекстном меню Thunar
Справа нажимаем пимпу с «плюсиком», и увидете вот такую формочку:
0991493f9da3024e5ef3be3fe1111feb Плюшки в контекстном меню Thunar
Имя — это имя пункта в контекстном меню.
Описание — описание утилиты, которое приводится в основном меню (на первом скрине).
Команда — команда запускаемая в терминале, при выборе пункта в меню.
Также снизу приведены переменные которые можно вписать в пункт «команда».
У меня настроки пункта меню для удаления дубликатов выглядят так:
de55b43c4e778d6e93c672b895546f18 Плюшки в контекстном меню Thunar
Так же в этом меню есть вторая вкладка, под названием «Условия появления», которое и так хорошо расписано как заполнять и для чего оно вобще нужно в самой программе, скрин:
28c6debf2240695104abaf1ce5d0df16 Плюшки в контекстном меню Thunar

Склееваем несколько файлов

Для такого колдовства я решил написать небольшёй скриптик на perl.
Код скрпта:

#!/usr/bin/perl -w
 use strict;
 my $outname = 'joined_'.join('_', @ARGV);
 open (OUT, '> '.$outname) or die "$!\n";
 for my $file (@ARGV) {
         open(F, $file) or next;
         while () {
                print OUT $_;
         }
        close(F);
 }
 close(OUT);

Для использования скрипта в контекстном меню нужно сохранить его, и дать ему права на выполнение.
И прописать в меню, передав в качестве параметра %N, что означает передать список всех выделеных файлов.

Склееваем несколько файлов, и удаляем дубликаты сразу

Для этго я немного модифицировал предыдущий скрипт, и он ставл выглядеть так:

#!/usr/bin/perl -w
use strict;
my $outname = 'joined_'.join('_', @ARGV);
open (OUT, '> '.$outname) or die "$!\n";
for my $file (@ARGV) {
        open(F, $file) or next;
        while () {
                print OUT $_;
        }
        close(F);
}
close(OUT);

system('cat '.$outname.' | sort -u > out_'.$outname);
system('rm '.$outname);

Как добавить его в автозагрузку, я думаю вы уже поняли, так что юзайте на здоровье icon wink Плюшки в контекстном меню Thunar

tt twitter big4 Плюшки в контекстном меню Thunar tt digg big4 Плюшки в контекстном меню Thunar tt facebook big4 Плюшки в контекстном меню Thunar tt gmail big4 Плюшки в контекстном меню Thunar tt myspace big4 Плюшки в контекстном меню Thunar tt reddit big4 Плюшки в контекстном меню Thunar

Комментарии (3) на “Плюшки в контекстном меню Thunar”

  • [...] файлового менеджера, вы можете прочесть в заметке «Плюшки в контекстном меню Thunar«. И так, для работы скрипта нужно создать [...]

    Ответить
  • sromanov:

    По перлу ‒ советую перейти на «3x-аргументную» форму open:
    open my $fh, «>», «filename»;
    это верно с точки зрения безопасности и, вообще является идиомой «modern Perl»

    не очень понятно с while () ‒ подсветка синтаксиса съела угловые скобки?

    Ответить
    • SHok:

      3x-аргументную форму вызову учтём :smile:
      А с while (), поправил уже всё, подсветка скушала скобки.

      Ответить

Оставить комментарий

CAPTCHA изображение
Обновить изображение
*

RSS-подписка NIG Twitter-подписка NIG

Метки
Друзья
Блог линуксоида Программы для диагностики компьютера
Супер Pixel
Убивалка флешаБэкконект шелл. Часть вторая.Бэкконект шелл. Начало.НАМ для деления чиселПростая арифметикаПередача файлов. Часть третья. Клиент.Dll injectionСканер портовКодировка текста в BMPРухнул на два дняПередача файлов. Часть вторая. Сервер.Поворот и BMPCRC32 суммаBMP форматфайловые вирусыассемблер, строкиАссемблер и матрицапримеры ассемблерМногопоточное программированиеАрхитектура клиент — серверРаздача ICQПишем шуткупишем паукаПривет от ДжеймсаОбход firewallЗагрузка картинок на Gyazo, прямо из ThunarКейлоггер 3Плюшки в контекстном меню Thunarc по сетиКейлоггер 2КейлоггерСкачать Ассемблер!VirusCheckerОтморозки мешают жить ?! Не проблемма !Cкрипты для взлома аккаунтов QIPWinAPI. Работа с файлами. Часть третья. ЧтениеDlink exploitБрут сайта etxt.ruКрасивая раскладка клавиатуры в GnomeМои безделушки на PerlКак запускать Perl скрипты под WindowsБрутфорс партнёрки ZipCoinПарсер upwap.ruИзменения в блогеЧудо ЗаливалкаСкрипт для загрузки файлов на Zalil.ruЯндекс «чоткий» поисковик!WinAPI. Работа с файлами. Часть вторая. ЗаписьWinAPI. Работа с файлами. Часть первая. ПоискПолучение MD5 хеша средствами C++Что нам стоить letitfile.com забрутить?WarCraft III запуск под LinuxЭнтропия файлаWinsock и C++. Мини прокси. Часть |\\/. Завершающая.Перепилил чекер для 4gameЧекер акаунтов YoupornCMailSend v 1.1. Отправка почы без проблемСлучайные числаWinsock и C++. Часть |||. smtp монстр.Брутфорс LetitFile.comИспользование X-Forwarded-For, для обмана веб-сервера, подмена IP подручными средствамиДело было вечером, делать было нечего…Мысли о аудио сервереПарсер ников из твиттераКонец школоло…Perl+Linux. Заметка первая (Удобный Paste bin).Бэкконект шелл.E-MAIL + winsocket + Cpp. Сложно?winsock и C++. Часть ||. Атака клоунов.C++ резолвинг адресаPerl, анализ HTML кода и определение CMSМатематика в C++winsock и C++