Ответ 1
Вы можете использовать опцию -path
вместо -name
. Он будет соответствовать всему абсолютному пути с регулярным выражением.
find /var/www/html -path "*/myFolder/*.php" -exec do_some_housekeeping {} \;
Это моя структура папок:
/site1/myFolder/otherFolder1/a.gif
/site1/myFolder/otherFolder1/b.png
/site1/myFolder/otherFolder1/c.php
...
/site2/myFolder/otherFolder2/d.gif
/site2/myFolder/otherFolder2/e.png
/site2/myFolder/otherFolder2/f.php
...
/site3/myFolder/otherFolder3/g.gif
/site3/myFolder/otherFolder3/h.png
/site3/myFolder/otherFolder3/i.php
...
Получил это:
find /var/www/html -type d -name myFolder -exec find {} -name "*.php" \;
for i in `find /var/www/html -type d -name myFolder -exec find {} -name "*.php" \;`
do
some_house_keeping_here
done
Но я хочу сделать что-то вроде этого:
find /var/www/html -type d -name myFolder -exec find {} -name "*.php" -exec do_some_housekeeping {} \; \;
Вы можете использовать опцию -path
вместо -name
. Он будет соответствовать всему абсолютному пути с регулярным выражением.
find /var/www/html -path "*/myFolder/*.php" -exec do_some_housekeeping {} \;
Существует флаг -path
, который, вероятно, поможет много.
find /var/www/html -path "myFolder/otherFolder?" -name "*.php" -exec do_some_housekeeping {} \;