mv comando confunde o nome do diretório com a opção de comando

11

Eu tenho um diretório chamado --pycache-- , que preciso migrar para __pycache__ . Usando o comando mv da seguinte maneira, me fornece a saída listada. Como posso usar o CLI para fazer o que eu quero?

$ mv --pycache-- __pycache__
/bin/mv: unrecognized option '--pycache--/'
    
por user81557 26.11.2011 / 06:30

2 respostas

22

Este é um problema padrão com nomes de arquivos / diretórios que começam com símbolos menos convencionais. Seu problema é que mv está tratando --pycache-- como nome de longa opção (desde que comece com -, há também opções curtas, elas começam com -). Consulte a página de manual do getopt para obter detalhes sobre opções longas e curtas.

A solução padrão nessa situação é usar um traço duplo vazio - antes de todo argumento, que informa ao comando (mv no seu caso, mas funcionará com outros, cp por exemplo) para Pare de tratar o que segue como opções e trate-as como argumentos.

Assim, seu comando se tornará:

$ mv -- --pycache--/ __pycache__

e não falhará.

    
por 26.11.2011 / 06:45
15

Seu primeiro caractere - é ambíguo para o comando mv (ou melhor, significa inequivocamente que um nome de opção é seguido).

Tente isso:

mv ./--ppycache-- __pycache__

Fonte: linux.about.com

    
por 26.11.2011 / 06:49

Tags