Альтернатива найти? [закрыто]

Есть ли альтернативная программа find с более традиционным интерфейсом CLI? find работает и ожидает параметров по-разному от большинства других utils.

Уточнение: я ищу программу, которая имеет в основном те же функции, что и find с интерфейсом командной строки, который работает и выглядит как рекомендации в командной строке POSIX (или, по крайней мере, GNU).

27 голосов | спросил Tamás Szelei 20 Maypm11 2011, 14:12:06

5 ответов


11

Это распространенное заблуждение.

Найти следует за синтаксисом параметров. Вы просто путаете примитивы выражения с параметрами:

 find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
 [cmd][-->        options          <--] [--> arg0..argN  <--]

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

ответил Mel 20 Maypm11 2011, 17:18:45
9

Я бы посмотрел на locate. Он будет просматривать свою базу данных файлов и быстро распечатывать имена путей, которые соответствуют тому, что вы даете.

[email protected]:~$ locate odg
/home/kevin/Documents/final.odg
/usr/share/doc/packages/sysconfig/netconfig.odg
/usr/share/gimp/2.0/help/en/gimp-tool-dodge-burn.html
....
[email protected]:~$ locate .odg
/home/kevin/Documents/final.odg
/usr/share/doc/packages/sysconfig/netconfig.odg
[email protected]:~$ 

Как вы можете видеть, это подтекстовое совпадение: если вы дадите ему odg, то он будет соответствовать d КГД е. Но если вы дадите ему .odg, то это не будет.

Однако есть один недостаток: ему нужна база данных. Эта база данных должна обновляться, когда что-то меняется. Тем не менее, моя Fedora 13 устанавливает это в ежедневный crontab.

ответил Kevin M 20 Maypm11 2011, 23:15:35
4

Что вы пытаетесь найти? Если вы обычно ищете файлы исходного кода, посмотрите ack . Это инструмент поиска исходного кода, но переключатель -f ack найдет файлы, соответствующие заданному типу файлов.

Итак, если вы хотите найти все файлы Perl в каталоге, например, просто:

ack -f --perl

Если вам не нравятся типы файлов, которые распознаются ack, вы можете добавить свои собственные в свой ~/.ackrc.

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

ответил Andy Lester 16 SunEurope/Moscow2012-12-16T10:37:36+04:00Europe/Moscow12bEurope/MoscowSun, 16 Dec 2012 10:37:36 +0400 2012, 10:37:36
-1

Одна из замечательных вещей, которые должен изучить каждый программист: Если вы не можете найти инструмент, создайте свой собственный!

#!/usr/bin/bash
find -name $<

Я мог бы написать лучший, с -t для фильтрации типов и т. д.

Изменить . Вышеупомянутый скрипт Bash. Он принимает аргумент командной строки и передает его для определения значения параметра -name. Просто простой пример. Поскольку я поставил этот ответ, я нашел этот скрипт python:

https://github.com/sjl/friendly-find/

Интерфейс выглядит неплохо, но я не тестировал его производительность. Возможно, стоит проверить.

ответил xixixao 16 SunEurope/Moscow2012-12-16T10:13:02+04:00Europe/Moscow12bEurope/MoscowSun, 16 Dec 2012 10:13:02 +0400 2012, 10:13:02
-2

Самый стандартный способ найти вещи в unix.

du -a <directory>|grep <pattern>| awk  '{print $2}'
ответил johny smith 9 Mayam17 2017, 09:37:25

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132