Что-то вроде следующего - это то, что я хочу, но мой код не работает, независимо от того, как я убегаю {}
и+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Посмотрев этот вопрос по Unix - & - Linux , я обнаружил, что следующий код работает, но это не вложенный поиск как таковой, и я подозреваю, что есть лучший способ сделать эту конкретную работу.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Есть ли какой-нибудь способ вложения find -exec
без необходимости вызывать оболочку (как указано выше) со всеми ее причудливыми ограничениями на кавычки и экранированием?
Или это можно сделать непосредственно в одной команде поиска, используя сочетание множества параметров?
find
, но если find
вы не можете этого сделать, то почему find
так почитается (?) Как инструмент использовать для поиска файлов? ... Впоследствии я обнаружил, что это find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
прекрасно работает в моей ситуации (ссылка на jw013 -prune
привела меня к этому на странице руководства), но мне интересно, является ли это надежным методом (в общем). Я никогда не использовал find
(менее чем за год Linux), поскольку locate
сделал почти все, что мне нужно, так что это неизвестная территория.
-path
Тест именно то , что я собирался предложить. При этом вы сможете делать все, что хотите (извините за ассоциацию Ace Of Base;))