Como renomear o arquivo e também mover o arquivo sem renomear o arquivo?

0

Se o nome do arquivo for The_Intel_Microprocessors_8th_Edition.pdf (DearBits) e se eu estiver usando o comando mv para renomear o seguinte erro:

$ mv -f The_Intel_Microprocessors_8th_Edition.pdf (DearBits)  Intel_microprocessors

bash: syntax error near unexpected token '('

Se eu estou tentando mover meu arquivo The_Intel_Microprocessors_8th_Edition.pdf (DearBits) para outro diretório, o seguinte erro ocorre:

$ mv The_Intel_Microprocessors_8th_Edition.pdf /(DearBits/) /home/emertxe/Emertxe_books

bash: syntax error near unexpected token '('
    
por Mohmmed Asif 22.08.2017 / 17:08

2 respostas

3

Você deve citar nomes de arquivos se eles contiverem espaços ou caracteres especiais que, de outra forma, seriam interpretados pelo shell. Isso inclui as chaves redondas () no seu caso.

Use aspas simples '' normalmente, a menos que você precise do Bash para expandir as variáveis:

mv 'The_Intel_Microprocessors_8th_Edition.pdf (DearBits)' Intel_microprocessors

ou

mv 'The_Intel_Microprocessors_8th_Edition.pdf (DearBits)' /home/emertxe/Emertxe_books/

A alternativa à cotação é escapar de todos os espaços e caracteres especiais, escrevendo uma única barra invertida \ na frente de cada um deles:

mv The_Intel_Microprocessors_8th_Edition.pdf\ \(DearBits\) Intel_microprocessors

Este também é o que o Bash faz para você se você usar a tecla Tab para completar automaticamente o nome do arquivo depois de digitar os primeiros caracteres, mas é irritante fazer isso manualmente como você sempre deve lembrar quais personagens você precisa para escapar e você não pode esquecer de nenhum.

    
por Byte Commander 22.08.2017 / 17:25
0

Você não pode ter caracteres especiais no comando mv sem barras invertidas. O comando adequado seria:

mv -f The_Intel_Microprocessors_8th_Edition.pdf\ \(DearBits\)  Intel_microprocessors
    
por NerdOfLinux 22.08.2017 / 17:24