ls: no se puede acceder a /directory/path/*.rar: no existe tal archivo o directorio

1

De los siguientes resultados parece que * .rar se está tomando literalmente y no se ha expandido. man glob no da detalles sobre cómo se expande. ¿Alguien podría explicar amablemente por qué?

~ / Films $ ls "La noche de los muertos vivientes (1968) /"  
Night_of_the_Living_Dead_1968.par2 Night_of_the_Living_Dead_1968.part23.rar.1  
Night_of_the_Living_Dead_1968.part01.rar Night_of_the_Living_Dead_1968.part24.rar  
...

~ / Films $ ls "La noche de los muertos vivientes (1968) / *. Rar"  
ls: no se puede acceder a Night of the Living Dead (1968) / *. rar: No existe tal archivo o directorio  
~ / Films $ ls "$ (pwd) / Night of the Living Dead (1968) / *. Rar"  
ls: no se puede acceder a / home / g / Films / Night of the Living Dead (1968) / *. rar: No existe tal archivo o directorio  
~ / Films $ ls "La noche de los muertos vivientes (1968) / * rar"  
ls: no se puede acceder a Night of the Living Dead (1968) / * rar: No existe tal archivo o directorio  
usuario985675
fuente
do ls "La noche de los muertos vivientes (1968)" / * rar
nos

Respuestas:

4

Las *comillas simples internas se tratan literalmente. Por lo tanto, debe poner solo el nombre del directorio que tiene espacios, entre comillas:

ls "Night of the Living Dead (1968)"/*.rar  

Una *comilla doble interna se expande por el shell.

usuario22644
fuente
1
A * entre comillas simples se trata literalmente. A * dentro de comillas dobles se expande como un globo.
William Pursell
disculpas: estaba pensando que el problema de los OP era que ls estaba configurado para una función o un alias que mezclaba las comillas; ¡pero de hecho es mi función la que causaba que "*" se expandiera! No puedo eliminar el voto negativo a menos que edite su respuesta.
William Pursell
Una forma más fácil de hacer esto interactivamente es ls Night[TAB]/*.rar; deje que el shell complete el nombre del directorio en lugar de escribirlo. La finalización de la pestaña del shell insertará barras invertidas según sea necesario para escapar de cualquier carácter especial.
Keith Thompson