Copiar archivos de directorios que tienen espacios en su nombre

Copiar archivos de directorios que tienen espacios en su nombre

Esto es lo que intenté.

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

Hice la sedoperación para reemplazar los espacios en blanco con un \y un espacio en blanco para que el comando de copia funcione. Luego, desde la GUI de selección de archivos de Zenity, elegí un archivo para que el valor dentro inputFilesea /home/username/Documents/Learning\ and\ Development/testfile.txt.

Ahora, cuando intento copiar este archivo a mi directorio de trabajo con

cp $inputFile .

Aún así devuelve el error,

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

¿Hay alguna forma de evitarlo? En realidad estoy escribiendo un programa. Por eso no quiero decirles a los usuarios que cambien el nombre de sus carpetas para evitar espacios.

Respuesta1

Puedes hacer el truco fácilmente, encerrándolo entre comillas dobles:

cp "$inputFile" /destination/

Encerrar caracteres entre comillas dobles ('"') conserva el valor literal de todos los caracteres entre comillas, con la excepción de '$', '`', '\'. Leer más:http://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html

Respuesta2

puedes agregar * donde apareció el espacio y la copia se puede hacer como

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

donde desea copiar el tst.txt de los usuarios a la carpeta Descargas desde la carpeta de inicio

información relacionada