erro ao tentar mv um arquivo com -r no nome do arquivo

erro ao tentar mv um arquivo com -r no nome do arquivo

Aqui está o meu problema:

Eu tenho um arquivo com -r no nome:-r.jpg

Quando tentei fazer um, mv *.jpg old/recebi:

mv: invalid option -- 'r'

Mesmo para

for g in *.jpg;do echo $g &&mv "${g}" old/;done

Eu tenho o mesmo erro.

Responder1

A maioria dos utilitários de linha de comando tem uma provisão para separaropçõesdeargumentos.

Isso evita uma série de problemas com"especial"nomes de arquivos que parecem opções.

A indicação de separador mais comum no final das opções são dois hífens --ou --que também é suportado por mv.

Em outras palavras:

 mv [OPTIONS] -- SOURCE DEST

ou já que você não especificou nenhuma opção:

 mv -- *.jpg old/

Responder2

A solução mais simples seria preceder o nome do arquivo com a ./descrição do caminho relativo

for g in *.jpg; do echo $g && mv "./${g}" old/; done

Também é possível usar o caminho absoluto

for g in $(pwd)/*.jpg; do echo $g && mv $g old/; done

Alternativamente, você pode querer usar o findcomando, pois ele já fornece o caminho relativo (você pode usar --max-depthse quiser processar apenas o diretório atual)

for g in $(find . -name "*jpg"); do mv $g old; done

E no pior caso em que você tem muitos caracteres complexos não analisáveis, você pode consultar os números de inode combinados com find -inume processar seus arquivos de acordo

 $ for g in $(ls -i1 ./*jpg | cut -f1 -d' '); do find . -inum $g -print0 | xargs -0 -I '{}' mv '{}' old; done

informação relacionada