2016-04-18 2 views
0

У меня есть сценарий, который использует find. До сих пор я был в порядке, используя -exec, чтобы получить то, что мне нужно, но сейчас я столкнулся с блокпостом.Выполнение команды Один раз, если найти совпадения файлов

Если файлы найдены, я хочу, чтобы выполнить команду раз (так -exec {} \; это не то, что я ищу), и это команда, которая не принимает какие-либо файлы в качестве параметров, так -exec {} \+ вона» т работы (или по крайней мере не с версией find на моей системе FreeBSD 10.1.

Что лучший способ пойти об этом?

ответ

1

Вы должны трубы имена файлов в xargs.

Я думаю, что пропустил важный ключ h ere: ваша команда не интересуется именами файлов. Таким образом, вы просто хотите запустить команду , если файлов были найдены? В этом случае, вы можете попробовать что-то вроде:

find -name nosuchfile | if read; then echo "hello"; fi; 
0

-quit первичный может быть использован в сочетании с -exec, -quit присутствует как в BSD и реализаций GNU find. Приведенный ниже пример построен для обеспечения того, что find заканчивается после первого совпадения, независимо от состояния выхода утилиты.

find path... [expression] \(-exec utility \; -quit -or -quit \) 

 Смежные вопросы

  • Нет связанных вопросов^_^