Como executar operações em arquivos ou diretórios com traços ou hifens? [fechadas]

0

Minha pergunta é que eu estava tentando renomear um arquivo chamado 12F-XYZ.pdf para 13F-XYX_ABX.pdf .

Agora, o problema que surge é que tanto o hífen como o original e os nomes exigidos possuem hífens. Eu sei que para espaços usamos \ para superar o problema, mas o que podemos fazer no caso de hífen ou qualquer outro caractere pode realmente causar o problema como este com não apenas renomear o comando, mas qualquer outro comando.

    
por DevX 02.03.2015 / 18:56

1 resposta

4

Como "David Foerster" apontou hífen (-) não é tratado especialmente pela casca. Então, no que diz respeito ao seu exemplo, você pode simplesmente fazer:

mv 12F-XYZ.pdf 13F-XYX_ABX.pdf

Mas se você tiver um espaço ou um caractere de escape literal (barra invertida) ou qualquer outro que precise ser escapado, você poderá escapar daqueles com o caractere de escape ie \ ou colocar o nome inteiro entre aspas '' o conteúdo dentro das citações é tratado literalmente.

Aqui está um exemplo:

mv 12F-XYZ.pdf 50M -XYZ.pdf  ##Wrong
mv 12F-XYZ.pdf 50M\ -XYZ.pdf  ##Right
mv 12F-XYZ.pdf '50M -XYZ.pdf'  ##Right

Uma regra prática seria escapar em dúvida. Esta seria uma boa leitura para você.

EDITAR: Como 'muru' apontou, você teria problemas no caso de um hífen principal. Nesse caso, você pode usar qualquer um dos seguintes:

mv -- foo.bar -foo.bar
mv foo.bar ./-foo.bar

O -- indica o fim do comutador para o comando anterior (neste caso, mv ). Observe também que nem todos os comandos suportam -- , então você usaria melhor a segunda opção ( ./-foo.bar ).

    
por heemayl 02.03.2015 / 19:35