Откладывание этого было бы проблемами с именами файлов, которые содержат новые строки, существует несколько улучшений эффективности, о которых я могу думать:
$PWD
непосредственно найти, вместо того, чтобы определить его для каждой подоболочки. Это сделает find
включайте полный путь в его вывод.rev
и cut
.Таким образом, я предложил бы, чтобы следующее получило список всех каталогов, содержащих желаемый файл:
find "$PWD" -name '__openerp__.py' |
rev |
cut -d/ -f3- |
rev
Отметьте это find
не заказывает его вывод, таким образом, он должен быть отсортирован прежде uniq'ing это. Как sort
уже поддержки, сжимающие идентичные элементы (-u переключатель), с исходным вопросом можно затем ответить:
find "$PWD" -name '__openerp__.py' |
rev |
cut -d/ -f3- |
rev |
sort -u
Вы захотите использовать опцию find -exec
:
find corpus/ -type f -exec ./individual.sh {} \;
Для каждого найденного совпадения, которое find
найдет, будет выполняться individual.sh, заменяя {}
на имя файла, который он нашел. \;
- так вы завершаете exec
поиском.
Причина, по которой ваш канал не работает, заключается в том, что выходные данные из find предоставляются individual.sh
через STDIN, а не в качестве аргумента. Вашему скрипту необходимо знать, чтобы искать EITHER-вход или аргументы через STDIN, чтобы использовать это.