Respuestas:
La solución más o menos definitiva cuando se trata de archivos que no se pueden eliminar por medios normales:
ls -il
La primera columna mostrará el número de inodo de los archivos.
find . -inum [inode-number] -exec rm -i {} \;
Esto eliminará el archivo con el número de inodo especificado después de la verificación.
-delete
lugar de -exec
, luego me di cuenta de que estaba usando, lo rm -i
cual es una buena idea, así que retrocedí. Lo siento.
Debería poder referirse a ese archivo como ~/~
(sin comillas) porque tilde-expansion solo aplica tilde ( ~
) al comienzo de la palabra.
rm ./~
, por la misma razón que usted dijo
./~
literalmente significa "un archivo o carpeta nombrado ~
en el directorio actual" . No hay hacks como caracteres de escape o referencias de inodo.
./~
sí. Después de cinco años, mi memoria está un poco borrosa, pero creo que es por eso que sugerí en ~/~
lugar de lo más normal ./~
: la pregunta se refiere específicamente a "un archivo nombrado ~
en el directorio de inicio de [OP] "; no "en el directorio actual".
Cítala ( rm '~'
) o escapa ( rm \~
).
Siempre es uno de esos (también para, por ejemplo $
), o agregar --
para evitar que el nombre del archivo se interprete como argumento: rm -- -i
elimina el archivo nombrado -i
; También es útil para rm -- *
cuando desea eliminar todos los archivos en el directorio actual: No accidental rm -f *
solo porque un archivo se llama así.
--
solo detiene la interpretación de los siguientes argumentos como parámetros: no impide que el shell realice su expansión (por ejemplo *
), que es lo que está sucediendo aquí. (Sé que lo sugirió como alternativa para otras situaciones, pero una advertencia sería buena).