Мне интересно, почему не работает следующая команда:
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
.
Есть ли пробелы в именах каталогов или файлов?