Назад | Перейти на главную страницу

Интересно, почему sed не работает с xargs, как я ожидал

Мне интересно, почему не работает следующая команда:

sudo find . -name index.htm | xargs -0 sudo sed -i 's/pattern1/pattern2/g'

Когда две команды запускались отдельно, они работали, как ожидалось, find нашел все файлы, которые мне нужно было изменить, и sed правильно заменил текст в соответствии с регулярным выражением (очевидно, когда я запускал команду sed отдельно, я указывал имя файла в качестве аргумента). При запуске их вместе с xargs -0 я получил

sed:
    ./index.htm
    ./folder1/index.htm
    ./folder1/subfolder2/index.htm
    ...
    ...
    ./lastfolder/index.htm: No such file or directory

В итоге я использовал

sudo find . -name index.htm -exec sudo sed -i 's/pattern1/pattern2/g' {} \;

и он работал нормально, мне было просто любопытно, почему использование xargs не работает ....

Вы не использовали -print0 вариант с find.

Есть ли пробелы в именах каталогов или файлов?