LINUX.ORG.RU

fselect 0.3.1

 , , , ,


6

4

fselect — это консольная утилита для поиска файлов с помощью выражений, напоминающих SQL. В некоторых случаях может заменить традиционный find.

Преимущества:

  • возможность создания сложных запросов с помощью скобок и операторов SQL;
  • поиск по ширине/высоте изображений;
  • поиск внутри zip-архивов;
  • форматирование вывода в CSV, JSON и null-terminated строки.

Пример:

$ fselect "fsize, modified, path from /home/pupseng depth 3 where size >= 1mb and ( name like '%.jpg' or name like '%.png' )"

1.82 MiB	2018-01-16 13:31:59	/home/pupseng/Pictures/Screenshot from 2018-01-16 13:31:46.png	
1.29 MiB	2017-09-05 13:00:02	/home/pupseng/Downloads/Telegram Desktop/image_2017-09-05_12-59-55.png	
2.74 MiB	2017-05-31 12:23:31	/home/pupseng/Downloads/Telegram Desktop/IMG_9514.jpg	
2.25 MiB	2017-07-28 15:57:44	/home/pupseng/Downloads/Telegram Desktop/image_2017-07-28_15-57-35.png	
3.56 MiB	2016-07-04 16:43:13	/home/pupseng/Downloads/fugue.png	
7.15 MiB	2016-10-24 12:25:32	/home/pupseng/Natasha/DCIM6807.jpg	

Утилита написана на языке программирования Rust и в настоящий момент устанавливается с помощью cargo. Крайне приветствуется помощь в организации сборки пакетов для различных дистрибутивов Linux, а также Mac OS.

>>> Подробности на Github

Давно пора, плюсанул.

anonymous ()
Ответ на: комментарий от anonymous

Сила СКУЛя не только в запросах а в индексах. Поглядел я бы на гугл если бы он результаты поиска выдавал на следующий день. Так что результаты замеров времени при поиске в студию.

mx__ ★★★★ ()
Ответ на: комментарий от mx__

Кстати а зачем сделали разное название 'полей' ?

mx__ ★★★★ ()

Наверное, нужно. Но я и find не припоминаю, когда последний раз использовал.

Virtuos86 ★★★★★ ()
Ответ на: комментарий от Virtuos86

Великолепно. Всегда под рукой и доступ к нужным файлам, и пакетная обработка файлов:

find . -type f -exec prog "{}" \;
или
find . -type f -print0 | xargs -0 -n 1 -P 4 prog

saahriktu ★★★★★ ()
Ответ на: комментарий от mx__

Индексы, Гугл… SQL тут при-чём? SQL это именно что язык запросов. И на сколько я понимаю в гуглопоиске он вообще никаким боком не используется

MrClon ★★★★★ ()
Ответ на: комментарий от theNamelessOne

Вы так говорите, как будто бы люди с другой мотивацией специально выбирают обрабатывать по одному файлу руками. Например, если нужно изменить размеры 87519-ти jpeg'ов, то они открывают по одному файлу в GIMP'е. Или если нужно распаковать 24785 архивов тоже распаковывают по одному. И т.д.

saahriktu ★★★★★ ()

Каждый раз когда думаешь что все инструменты для юникс уже сделали обязательно появится чтото на базе этих инструментов или заменяющее их

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

ism ★★ ()
Последнее исправление: ism (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Например, если нужно изменить размеры 87519-ти jpeg'ов, то они открывают по одному файлу в GIMP'е. Или если нужно распаковать 24785 архивов тоже распаковывают по одному. И т.д.

Я понял, что не так. Видимо, я не обрабатываю 100500 джипегов на регулярной основе. А массовую распаковку архивов поддерживают, наверное, все популярные гуевые файлменеджеры. Если же такие задачи появятся, я, естественно, поищу легкие пути решения проблемы. Жизнь моего локалхоста довольно проста и незатейлива, чтобы я был каким-то особо продвинутым линуксоедом, а специально изучать весь инструментарий неинтересно.

Virtuos86 ★★★★★ ()
Ответ на: комментарий от saahriktu

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

anonymous ()

Совсем тяжко людям без LINQ.
И ведь смысла в этой штуке маловато - для наколечных скриптов не годится, а там где нужна сложная фильтрация и без нее управятся.

ritsufag ★★★★★ ()
Ответ на: комментарий от ritsufag

Наоборот, для наколеночных скриптов самое то.
find уж слишком олдскульный.

WatchCat ★★★★ ()

прикольно и ворде даже годно, но depth годней было бы в конец выражения

anonymous ()

Утилита написана на языке программирования Rust и в настоящий момент устанавливается с помощью cargo.

Ставить рантайм хипстоязыка для этой безусловно уникальной утилиты.

mos ★★★★★ ()
Ответ на: комментарий от ritsufag

Дооо, сколько там осталось пока некрософт не бросил и не придумал новое с более модным названием? Да, для скуля уже бросил вроде.

mos ★★★★★ ()
Ответ на: комментарий от anonymous

В карму? В личку скинул? Зофрендил? По тонкому льду ходишь...

mos ★★★★★ ()
Ответ на: комментарий от MrClon

Индексы, Гугл… SQL тут при-чём?

Согласен. Меня на слове скуль заклинило почему то подумал что он делает индексный файл :)

И кстати если они сделали СКУЛь синатаксис подобынй почему у них поля разные ? Тогда уж бы альсы в строке указали что ли ...

P.S. Вообще народ прав, тем кому нужна ком-строка достаточно хорошо знают : grep, tar, gzip, find и прочую фигню и сделают все что им угодно без проблем. Кто ком-строку не знает им эта прога и не нужна.

mx__ ★★★★ ()
Ответ на: комментарий от mos

Ставить рантайм хипстоязыка для этой безусловно уникальной утилиты.

Стоп. Какой еще рантайм ? Не понял.

mx__ ★★★★ ()
Ответ на: комментарий от saahriktu

Плюсую. find это не просто ценный мех. А с -exec prog «{}» вообще бомба.

medossa ★★ ()

Вроде нужно, так как ключи find это угар, но ... раст?

d_a ★★★★★ ()
Ответ на: комментарий от anonymous

Ну а я, например, нет.

У меня из-за специфики одного диковатого приложения, написанного на коленке двумя полоумными студентами в начале нулевых, по всем компам его использующим (а их больше сорока) создаются огромные количества промежуточных файлов, логов, нужных и ненужных, распределение коих весьма рандомно. Приходилось писать костыли. Приложение переписывать начальство не разрешает(нет половины исходников и никаких доков). Оно хоть и кривовато, но падает не очень часто и требуемое делает. Сам начал в свободное время писать утилиту почти с теми же параметрами, но на си. Если эта работать будет а ломать ничего не начнет - мне повезло и я сэкономил кучу времени. Знаю как минимум одного человека, который в схожей ситуации уже полгода пишет подобную вещь, но на плюсах. Так что спрос есть, еще какой.

anonymous ()
Ответ на: комментарий от d_a

А в чём проблема? Удобнее чем С и bash, проще чем С++, быстрее чем питон.

red75prim ()
Ответ на: комментарий от mos

А что из себя представляет этот рантайм, что там за библиотеки, сколько весят?

hobbit ★★★★★ ()

С синтаксисом ассемблера будет надеюсь? :)

anonymous ()
Ответ на: комментарий от hobbit

А что из себя представляет этот рантайм, что там за библиотеки, сколько весят?

Если собирать с настройками по умолчанию, то только C-runtime: libc, libgcc, libpthread и всё такое. Rust библиотеки линкуются статически.

red75prim ()
Последнее исправление: red75prim (всего исправлений: 1)
Ответ на: комментарий от red75prim

Так это не мы, там выше какой то чел сделал вброс про какой то рантайм :(

Удобнее чем С и bash, проще чем С++, быстрее чем питон.

И что только народ не юзает лишь бы не на ГО писать :)

mx__ ★★★★ ()
Ответ на: комментарий от ism

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

Строго говоря файловая система и есть база данных. Но ни разу не реляционная.

Igor_FF ()

Крайне приветствуется помощь в организации сборки пакетов для различных дистрибутивов Linux

какая минимальная версия раста нужна? у меня есть 1.17 на obs, обновлять немного лениво, но можно

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

Последняя. Как обычно... Создайте issueс запросом указать мин. версию.

RazrFalcon ★★★★★ ()

на нормальный язык переписать и будет нужно

Harald ★★★★★ ()

Интересно было бы ее в шелл превратить.

A-234 ★★★★★ ()

Оптимизировать запросы и твикать параметры уже можно?

anonymous ()
Ответ на: комментарий от mx__

И что только народ не юзает лишь бы не на ГО писать :)

Ты б ещё с перлом Rust сравнил.

anonymous ()
Ответ на: комментарий от anonymous

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

Ну а у меня была. Я храню музыку во flac, а на плеере для экономии места на карточке использую mp3. Когда я скачиваю очередной альбом, я запускаю несколько скриптов, которые переименовывают скачанные файлы в нужном мне формате, расставляют теги, перекодируют в несколько потоков в mp3 и записывают на плеер.

Другой юзкейс: приехал я из отпуска, на фотоаппарате куча файлов вида _DESC0646.JPG. Скрипт переименовывает их в формате 2018-03-06 12:27:51.jpg, с учётом часового пояса при необходимости, а также пережимает видео.

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

Jini ★★ ()
Ответ на: комментарий от Dark_SavanT

Я думаю, что ковыряться в большой кодовой базе при помощи SQL гораздо веселее. Был даже редактор, который позволял так делать.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от anonymous

Я как-то разгребал выдранную с боем с дохлого винта коллекцию музыки. Вот там сила юниксовых утилит проявилась, когда на коленке был слеплен скрипт который запускал какую-то софтину, которая вытаскивала теги из файла(благо коллекция была протегована нормально) и раскладывал их в директории по шаблону.

Dark_SavanT ★★★★★ ()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от tailgunner

веселее всего когда она размечена типа как lxr.bootlin.com

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Последняя. Как обычно...

хипстеры. обновил версию в своем obs до 1.24.1, попробую собрать

upcFrost ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Ковыряться в большой кодбазе иногда полезно.

Это когда из вима делают подобие IDE?

Virtuos86 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.