É um comportamento normal. Em ambos os casos, sed
sai com error code 4
... por info sed
:
4
An I/O error, or a serious processing error during runtime,
GNU 'sed' aborted immediately.
e em ambos os casos, as mensagens são auto-explicativas. Não sei ao certo o que não está claro, mas para o registro: na primeira vez que ele errar porque não pode editar um diretório e na segunda vez que ele reclama porque não pode editar stdin
no local, ele precisa de um arquivo (isto é, remover esse redirecionamento antes de $file
)
A maneira correta de fazer isso com find
é, como você observou, via -exec ...
Com globs, você terá que usar um loop e testar se a entrada for um arquivo regular antes de executar sed
. Ou, se você for um usuário zsh
, basta fazer:
sed -i 's/foo/bar/g' *(.)