Estou tentando alterar uma string em vários arquivos de texto (configurações migradas para outro usuário). Eu usei este comando:
grep -iIlr "/home/user/.local" | xargs sed -i 's/\/home\/user\/\.local/~\/\.local/g'
também tentei isso:
grep -iIlr "/home/user/.local" | xargs -d '\n' sed -i "s/\/home\/user\/\.local/~\/\.local/g"
Eles não funcionam. Erros são produzidos por sed , a saída do comando é:
sed: can't read dir/file1: No such file or directory
sed: can't read dir/file2: No such file or directory
...
sed: can't read dir/file99: No such file or directory
O erro é produzido para cada arquivo (99 no total). O dir/file1..99 retornado é válido, é o caminho e nome de arquivo adequados para os arquivos.
grep sozinho produz a lista adequada de arquivos. Não há caracteres especiais nos nomes dos arquivos, acho que também não há espaços (não tenho certeza sobre isso). O xargs não está passando uma lista adequada?
SO: RHEL 8.10 totalmente atualizado,
GNU grep v 3.1,
GNU sed 4.5,
xargs (GNU findutils) 4.6.0
Adicionando a saída (exemplo das últimas linhas) do grep -iIlr "/home/user/.local"
comando.
senha,~/.local/pipx
venvs/pipx/bin/pipx
venvs/pipx/bin/activate.fish
venvs/pipx/bin/activate-global-python-argcomplete
venvs/pipx/bin/activate.csh
venvs/pipx/pyvenv.cfg
venvs/pipx/lib/python3.11/site-packages/pipx_shared.pth
shared/bin/pip3.11
shared/bin/activate
shared/bin/pip3
shared/bin/pip
shared/bin/wheel
shared/bin/activate.fish
shared/bin/activate.csh
shared/pyvenv.cfg