Я пытаюсь найти все экземпляры строки во всех файлах в моей системе до указанной глубины каталога.Затем я хочу заменить их другой строкой, и я использую 'find' и 'sed', передавая одну в другую.
Это работает, когда я использую базовый путь как cd /home/../ .. или любой другой каталог, который не является "/".Это также работает, только если я выбираю глубину каталога 1 (поэтому /test.txt изменяется, но /home/test.txt нет). Если я ничего не изменяю и использую, скажем, глубину 2 или 3, то ни один / test.txt или /home/text.txt изменены.В первом случае никаких предупреждений не появляется, а во втором - результаты ниже (и ни в одном из файлов не заменяется ни одной строки).
К сожалению, это сработало однажды на ровном месте, но у меня нетИдея, как и я не могу воссоздать результаты.Я должен сказать, что знаю риски использования этих команд с root из базового каталога, и конкретное использование приведенных ниже программ является преднамеренным, поэтому я не ищу альтернативный путь, просто подсказка о том, как это не работает и, возможно,предложение о том, как это исправить.
cd /;find . -maxdepth 3 -type f -print0 | xargs -0 sed -i 's/teststring123/itworked/gI'
sed: couldn't open temporary file ./sys/kernel/sedoPGqGB: No such file or directory
sed: couldn't open temporary file ./proc/878/sedtqayiq: No such file or directory
Как видите, есть предупреждения, но, тем не менее, чем меньше я ожидаю, что это сработает, команды будут хорошими, все, что я пропускаю, ребята?