Это должно сделать это для вас -
Используя опцию find -type d
, вы ограничиваете поиск по каталогам. Предоставление pattern with -not -name
может помочь вам игнорировать соответствующие каталоги. -exec option
может помочь вам запустить сценарий оболочки для всех найденных каталогов. {} \;
просто означает буферное пространство для exec для выполнения сценария оболочки для каждого каталога по одному. -depth n
обеспечит снижение до уровня каталогов.
find . -not -name ref\* -not -name .\* -type d -depth 1 -exec ./script.sh {} \;
UPDATE:
Плохо, я забыл об обработке двух пользовательских параметров. Я, возможно, не эксперт, но самый простой способ, которым я мог бы подумать, это отправить результат поиска в файл и затем запустить цикл for для этого файла.
Как то так -
[jaypal~/Temp]$ find . -not -name ref\* -not -name .\* -type d -depth 1 > dirlist
[jaypal~/Temp]$ for i in dirlist; do ./script.sh $i param1 param2; done
Альтернативный способ передачи пользовательских параметров (в соответствии с предложением @dma_k)
[jaypal~/Temp]$ find . -not -name ref\* -not -name .\* -type d -depth 1 | xargs script.sh param1 param2