У меня есть следующая команда find, sed и grep.
find . -type d \( -name ThirdParty -o -name 3rdParty -o -name 3rd_party \) -prune -o -type f \( -name "*.bat" \) -exec grep -L 'FOO' {} \; -print0 | xargs -0 sed -i -e '1iFOO'
Я хочу иметь возможность найти все .bat
файлы в каталоге, которые НЕ содержат строку «FOO», и передать их команде sed, которая добавляет строку «FOO» в начало файла. Однако, когда я запускаю часть моей команды find и grep (без sed):
find . -type d \( -name ThirdParty -o -name 3rdParty -o -name 3rd_party \) -prune -o -type f \( -name "*.bat" \) -exec grep -L 'FOO' {} \; -print
возвращает ВСЕ файлы bat, даже те, которые содержат строку 'FOO'. Это приводит меня к мысли, что команда grep ошибочна. Как я могу это исправить? спасибо