Deshacerse de un archivo llamado "-d" [duplicado]


18

Posibles duplicados:
¿Cómo elimino un archivo llamado "-p" de bash?
Cómo eliminar un archivo con este nombre en Linux: -] ??????? q
¿Qué comando necesito usar para eliminar un archivo llamado `-rf`?

Accidentalmente he creado un archivo llamado: -d

He intentado usar comillas simples y dobles, así como comodines para eliminarlo, pero cada vez que "rm" me da este error:

Advertencia: la opción --directory (-d) no está documentada y no funciona. Utilice -rf para eliminar directorios no vacíos rm: operando faltante Intente `rm --help 'para obtener más información.

¿Cómo me deshago del archivo?

Respuestas:


44
rm -- -d

--significa "fin de opciones". Cualquier cosa adicional en la línea de comando que sigue a esto se interpreta como un argumento (es decir, el nombre del archivo en su caso), y no como una opción.



8

Usar '-' es, con mucho, el más fácil en este caso específico. Sin embargo, una solución más general si tropieza con un archivo con caracteres de control no imprimibles es hacer referencia al archivo por inodo:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

Gnu-find tiene una opción -delete:

find -name "-d" -delete

de lo contrario podrías intentar

find -name "-d" -exec rm {} ";" 

pero - la solución de arriba es más corta, y muchos programas utilizan la forma de detener la interpretación de las banderas, utilizando la biblioteca getopt, por lo que aprender es algo útil en general.

Pero find / -delete es algo muy útil para aprender también. Tenga en cuenta que ambos ejemplos eliminarán los archivos de nombre "-d" de forma recursiva, lo que puede no ocurrir con frecuencia, pero si tiene un archivo, llamado "-d", es posible que tenga más. :)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.