web-dev-qa-db-fra.com

Copier des fichiers à partir de répertoires comportant des espaces dans son nom

C'est ce que j'ai essayé.

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

J'ai effectué l'opération sed pour remplacer les espaces vides par un \ et un espace pour que la commande de copie fonctionne. Ensuite, dans l'interface graphique de sélection de fichiers Zenity, j'ai choisi un fichier tel que la valeur à l'intérieur de inputFile soit /home/username/Documents/Learning\ and\ Development/testfile.txt.

Maintenant, quand j'essaie de copier ce fichier dans mon répertoire de travail avec

cp $inputFile .

Il retourne toujours l'erreur,

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

Y at-il un moyen de contourner cela? En fait, j'écris un programme. Donc, je ne veux pas dire aux utilisateurs de renommer leurs noms de dossiers pour éviter les espaces.

5
Anonymous Platypus

Facilement, vous pouvez faire l'affaire, entourez par des guillemets:

cp "$inputFile" /destination/

Les caractères entre guillemets ("" ") conservent la valeur littérale de tous les caractères entre guillemets, à l'exception de" $ "," ","\", en savoir plus: http: // www. gnu.org/software/bash/manual/html_node/Double-Quotes.html

6
Maythux

vous pouvez ajouter * où l'espace est apparu et la copie peut être faite comme

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

où vous voulez copier les utilisateurs tst.txt dans le dossier Téléchargements depuis le dossier de départ

0
Dark Prince