Use aspas:
mv -- "$file" "$(echo "$file" | sed ...)"
Else mv
vê vários argumentos. Um nome de arquivo chamado file name with spaces
seria 4 argumentos para mv
. Portanto, o erro: when moving multiple files, last argument must be a directory
. Quando mv
tem mais de 2 argumentos, está assumindo que você deseja mover vários arquivos para um diretório (que seria o último argumento).
Mas, no entanto, parece que você deseja remover os 5 primeiros caracteres do nome do arquivo. Isso pode ser feito mais simples com bash
:
mv -- "$file" "${file:5}"
Editar : adicionei o sinal --
, graças ao comentário de @ pabouk . Agora os arquivos que começam com traço -
também são processados corretamente.