Ваш -o
разделяет ваши аргументы. -exec
работает только в том случае, если вещи с той же стороны -o
успешны (путь -путь "*amblock/stats.*BRIK"
). Если вы хотите, чтобы -exec
работал на обоих условиях, вам нужно обернуть их в скобки:
find ${TRIADS_DIR}/*.dc.results \( -path "*amblock/stats.*HEAD" -o -path "*amblock/stats.*BRIK" \) -exec ln -s {} ${TRIADS_GROUP} \;
Нет, вроде как. Некоторые реализации find
имеют -regex
нестандартный предикат, который вы могли бы использовать вместо него, но я бы не назвал это "более эффективным".