Sé que este es un tema antiguo, pero tuve el mismo problema y quería compartirlo.
Aquí está mi historia (sea paciente, hay un final feliz).
Entorno:
Gentoo kernel 4.12.5 64bits en reiserfs
¿Cómo pudo pasar esto?
Tengo varias máquinas con una carpeta compartida usando sincronización. En algún momento en el pasado, eliminé un archivo llamado ".stfolder" y creé un directorio con ese nombre. Entonces, tal vez el error se deba a la sincronización sincronizando esta operación en otra máquina.
Ahora examinemos el error: (estoy operando como root aquí)
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
drw-rw---- 2 stopi syncthing 48 3 sept. 18:24 .stfolder
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
find -type f -name .stfolder
(<= no output there)
find -type f -name ".*"
./.stignore
./.stfolder
find -type f -name ".s*"
./.stignore
parece que el archivo es un fantasma, sin embargo, la carpeta responde normalmente (con find)
file .*
.: directory
..: directory
.stfolder: directory
.stfolder: empty
.stignore: C source, ASCII text
file .s*
.stfolder: directory
.stignore: C source, ASCII text
Lo sé, muy raro ...
rm -r .stfolder
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
rm .stfolder
rm: impossible de supprimer '.stfolder': Aucun fichier ou dossier de ce type
¡No puedo eliminar ese archivo fantasma!
Pero al final, lo eliminé con éxito moviéndolo en un punto de montaje tmpfs
mv .stfolder /elsewhere/
mv: impossible d'évaluer '.stfolder': Aucun fichier ou dossier de ce type
mv .* /elsewhere/
Debo decir que el error todavía está presente en tmpfs, por lo que no está relacionado con reiserfs:
cd /elsewhere
ls -lahd .*
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
ls -lahd .s*
ls: impossible d'accéder à '.s*': Aucun fichier ou dossier de ce type
Como puede ver en esta salida de bash, el archivo está presente y no presente al mismo tiempo. Debido a esta habilidad del gato Schrödinger , podemos crear una carpeta con el mismo nombre.
Pero espera, hay más (y deberías encontrar esto obvio): también podemos crear otro archivo con el mismo nombre.
touch .stfolder
ls -lahdQ
total 0
drwxrwxr-x 3 root users 100 3 sept. 19:13 "."
drwxrwxrwt 18 root root 440 3 sept. 17:35 ".."
-rw-r--r-- 1 root root 0 3 sept. 19:13 ".stfolder"
-rw-r----- 1 root root 0 3 sept. 19:09 ".stfolder"
El fantasma puede ser copiado (para que pueda duplicar el error), o manipulado por chown, chmod, etc. La única restricción es que no puedes nombrarlo, así que debes ponerlo en un directorio vacío y usar ". *" Como argumentos para esos comandos ... pero funciona!
Debido a la naturaleza misma de este, este archivo estaba vacío desde el principio (es solo una bandera para la sincronización).
Así que tenía curiosidad si podía poner algunos datos en ese archivo.
Y aquí, la solución vino a mí:
vi .*
" ============================================================================
" Netrw Directory Listing (netrw v162)
" /elsewhere
" Sorted by name
" Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special
" ==============================================================================
../
./
.<200b>stfolder
Sí, hay un carácter invisible en ese archivo, justo después del punto.
Esto explica todo.
Gracias a Dios, no usé "echo test >>. *" Y cat ...
.myfile
?