Чтобы запустить find
с собственным результатом, вы можете использовать аргумент -c
для sh
(или bash
), чтобы предотвратить внешняя команда find от обработки внутреннего {}
специально. Однако затем вам нужно передать результат внешнего поиска в качестве аргумента в sh
, который может быть расширен с помощью $ 0
:
find . -type d -name "*.data" \
-exec sh -c 'find "$0" -type f -name "*.important.txt" -exec echo \{\} \;' \{\} \;
Примечание: $ 0
следует заключить в кавычки ( «$ 0»
), чтобы предотвратить проблемы с именами каталогов, содержащими пробелы.
Это не совсем «рекурсивное» решение, потому что оно не допускает сколь угодно глубокого вложения без некоторых сложных экранирований, но оно поддерживает два уровня find -exec
, которые вы просили в своем пример.
Если ваш пример аналогичен вашей реальной проблеме, вы также можете поэкспериментировать с аргументом -path
, чтобы найти вместо этого:
find . -path '*.data/*important.txt'
DNAT
может быть достаточно:
# iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.1.2 --dport 8080 -j DNAT --to-destination 192.168.3.2:80
UFW before. rules
файл от какого-то altagoobingleduckgoing, похоже, использует формат iptables-save
, поэтому может содержать что-то вроде:
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp -d 192.168.1.2 --dport 8080 -j DNAT --to-destination 192.168.3.2:80
COMMIT