LINUX.ORG.RU

[find] [sed] Что не так в команде?

 ,


0

0

Здравствуйте!

Но во всех *.cpp и *.h файлах текущего каталога и подкаталогов сделать замену одной строки на другую.

Пишу команду

find . -name "*.cpp" -o -name "*.h" -exec sed 's/infofieldenter/InfoFieldEnter/g' {} > tmpfile && mv tmpfile {} \;

В результате получаю

find: отсутствует аргумент у `-exec'

Что делаю не так? Как должна выглядеть команда?


find . -name "*.cpp" -o -name "*.h" -exec sed -ibak 's/infofieldenter/InfoFieldEnter/g' {} \;

rymis ★★
()

sed 's/infofieldenter/InfoFieldEnter/g' {} > tmpfile && mv tmpfile {} \;

Не мучьте зверушку, используйте sed -i.

akk ★★★★★
()

>Что делаю не так?

Шел (допустим bash) первым парсит строки и находит в ней знакомые символы ">" и "&&", и даёт find'у не всё, что вы написали. Либо, как уже посоветовали, используйте sed -i, либо делать exec на шелл, которому и "кормить" команды sed и mv:

-exec sh -c 'sed "s/infofieldenter/InfoFieldEnter/g" "{}" > tmpfile && mv tmpfile "{}"' \;

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.