LINUX.ORG.RU
ФорумTalks

Альтернативы find и все-все-все


0

1

Все мы знаем, что программа find была придумана давным-давно, когда о таких вещах, как стиль опций GNU, никто и не задумывался. В результате современные пользователи время от времени сталкиваются с проблемой невозможности использования конструкции вида some-pipe-commands | xargs find -some condition

Вопросы:

  • Существуют ли рабочие альтернативы find?
    Я уже задавал этот вопрос ранее и узнал только про shopt -s globstar в bash, позволяющую использовать конструкции вида /etc/**/*.conf. Мне кажется, этого маловато.
  • Нужен ли ещё один велосипед?
    Лично я представляю себе решение проблемы как написание ещё одной программы, с теми же самыми опциями, что у существующего find, но с нормальной их обработкой в стиле GNU (не find <путь> [-опция значение], а extended-find [--опция=значение] [-О=З] [-Ы] <путь>).
★★★★★

extended wrap

Напиши обёртку для find, делов-то.

Camel ★★★★★ ()

Для таких монстров как find и dd можно сделать исключение и выучить ИМХО

fero ★★★★ ()

>some-pipe-commands | xargs find -some condition

Любитель писать все в строчку? Есть perl -e "...."

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

напиши свой враппер. Вообще, есть такой косяк даже у консольного софта. И в cli есть понятие юзабилити. Зачастую, вбивая сотый раз длинные убогие ключи, думаешь «что курил автор». Щас напрягает «watch --differences=cumulative». Не хочется алиасы/врапперы писать, но придётся.

true_admin ★★★★★ ()

locate, mlocate, slocate...

Хотя это немного не про то, зато пайповое.

Mobyshvein ()

Ну чо только люди не сделают, лишь бы шелл не учить.

for i in `some | commands | piped | together | in | a | pipe`; do
    find "$i" -some -criteria;
done
shimon ★★★★★ ()

нет интерактивного режима, нужно читать ман, хитровыпендренный порядок аргументов... Проще порыться в сраче locate'а глазами и грепом, чем учить это всё.

Или запустить наутилус от имени рута =) Хотя в наутилусе тоже уродский поиск. Но он хотя бы графический.

В гнуме есть меню «переход»->«искать_файлы», и оно уже лучше наутилуса, НО тоже есть косяк - оно повешено на какое-то важно сочетание клавиш на клавиатуре, причем изменить это сочетание никак нельзя.

ностальгирую по поиску в WindowsXP (именно XP, ибо в семерке его тоже запоганили наотличненько)...

stevejobs ★★★★☆ ()

man xargs
-i даст тебе то, что ты хочешь... Хм, хотя конфликтует с -exec. ну -I

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

>ностальгирую по поиску в WindowsXP

Это там где собака бегала?

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

Накидал черновой вариант:

# vim: set ft=sh:
# bash autocompletion functions for watch utility

_watch(){
	local cur prev long short
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	long="--beep --differences --errexit --exec --help --interval \
	--no-title --precise --version" 
	short="-b -d -e -h -p -v -t -x"

	case ${cur} in
		-)
			COMPREPLY=( `compgen -W "$short" -- "$cur"` )
		;;
		--*)
			COMPREPLY=( `compgen -W "$long" -- "$cur"` )
		;;
		'\0')
			COMPREPLY=( `compgen -A command -- "$cur"` )
		;;
	esac
}
complete -A command -o filenames -F _watch watch

Не осилил пресловутую опцию cumulative, остальное работает: опции, команды, пути.

//почему-то синтаксический парсер ЛОРа не хочет подсвечивать мой код %)

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

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

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