Nota temporária: há algo errado - o padrão renomear não manipula nomes de arquivo com caminho; Estou trabalhando em uma correção
O que está errado em seu comando é duas coisas:
find /tmp/dir -name "* *" -type f | rename 's/*/fixed_/g'
-
O
-name "* *"
corresponde apenas aos nomes dos arquivos com um espaço - não é isso que você quer, certo?- a solução é simplesmente deixar de fora; Não queremos excluir arquivos que correspondam a algum nome - queremos todos.
-
O padrão
rename
está errado de duas formas- você usou um padrão shell glob, mas ele precisa ser uma expressão regular, em suma, um regex (pode ser alguma expressão perl geral - vamos ignorá-la e usar apenas
s///g
) - o padrão fixo corresponderia ao nome completo e o substituiria por
fixed_
. Você deseja "substituir" os "primeiros 0 caracteres" porfixed_
, tecnicamente. Esse é o começo da linha, correspondido com^
. Podemos deixar de fora og
porque há apenas uma substituição necessária por linha.
- você usou um padrão shell glob, mas ele precisa ser uma expressão regular, em suma, um regex (pode ser alguma expressão perl geral - vamos ignorá-la e usar apenas
Juntando tudo, parece assim:
find /tmp/dir -type f | rename 's/^/fixed_/'