Estoy usando la terminal en MacOS Ventura. Quiero tener un archivo de texto de archivos que copiaré usando la terminal. Esto no funciona cuando hay espacios en los nombres de los archivos.
A=~/Documents/test1
B=~/Documents/test2
while IFS= read -r file; do
cp "${A}/${file}" "${B}"
done < ~/Documents/testme.txt
Aquí está el archivo de texto de ejemplo.
# contents of ~/Documents/testme.txt
the first file.pdf
the second file.pdf
the third file.pdf
Después de ejecutar el código anterior obtengo:
cp: /Users/myusername/Documents/test1/the first file.pdf: No such file or directory
cp: /Users/myusername/Documents/test1/the second file.pdf: No such file or directory
cp: /Users/myusername/Documents/test1/the third file.pdf: No such file or directory
Supongo que esto se debe a los espacios en blanco en el nombre del archivo, pero supongamos que quiero utilizar un archivo de texto con archivos sin espacios en blanco separados sólo con un salto de línea.
¿Cómo se hace?
Incluso cuando intento escapar de las comillas de uso, se producen los siguientes errores.
while IFS= read -r file; do
cp "\"${A}/${file}"\" "\"${B}/${file}"\"
done < ~/Documents/testme.txt
cp: "/Users/myusername/Documents/test1/the first file.pdf": No such file or directory
cp: "/Users/myusername/Documents/test1/the second file.pdf": No such file or directory
cp: "/Users/myusername/Documents/test1/the third file.pdf": No such file or directory
Sin embargo, no hay problemas para copiar y pegar esa misma línea.
cp "/Users/myusername/Documents/test1/the first file.pdf" ./test2
¡Funciona!
EDIT, versión zsh: zsh 5.8.1 (x86_64-apple-darwin22.0)
.