Copiando arquivos de diretórios com espaços em seu nome

Copiando arquivos de diretórios com espaços em seu nome

Isso é o que eu tentei.

inputFile=$(zenity --file-selection --title "Test" --text "Please select the file for analysis." | sed -e "s/ /\\\ /g")

Fiz a sedoperação para substituir os espaços em branco por um \e um espaço em branco para fazer o comando de cópia funcionar. Então, na GUI de seleção de arquivos do Zenity, escolhi um arquivo para que o valor interno inputFileseja /home/username/Documents/Learning\ and\ Development/testfile.txt.

Agora, quando tento copiar este arquivo para meu diretório de trabalho com

cp $inputFile .

Ainda assim retorna o erro,

cp: cannot stat ‘/home/user/Documents/Learning\\’: No such file or directory
cp: cannot stat ‘and\\’: No such file or directory
cp: cannot stat ‘Development/WhatsApp.apk’: No such file or directory

Existe alguma maneira de contornar isso? Na verdade, estou escrevendo um programa. Portanto, não quero dizer aos usuários para renomearem os nomes das pastas para evitar espaços.

Responder1

Facilmente você pode fazer o truque, coloque entre aspas duplas:

cp "$inputFile" /destination/

Colocar caracteres entre aspas duplas ('"') preserva o valor literal de todos os caracteres entre aspas, com exceção de '$', '`', '\', Leia mais:http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html

Responder2

você pode adicionar * onde o espaço apareceu e a cópia pode ser feita como

 cp  /home/user/users*tst.txt  /home/user/Downloads

onde você deseja copiar os usuários tst.txt para a pasta Downloads da pasta inicial

informação relacionada