file - una - mover varios archivos en linux
Archivo y directorio con el mismo nombre en el mismo directorio principal-Solaris 8, ufs (8)
Me pregunto qué podría causar esto. Aparte de los errores del sistema de archivos, podría ser causado por un carácter no ascii que se superó de alguna manera. En ese caso, use otro idioma con una semántica de cadena más sencilla para realizar la operación.
Sería interesante ver cuál sería el resultado de este fragmento de rubí:
ruby -e ''puts Dir["msheehan*"].inspect''
Ok, he estado trabajando con Solaris por más de 10 años, y nunca he visto esto ...
Tengo una lista de directorio que incluye un archivo y un subdirectorio con el mismo nombre:
-rw-r--r-- 1 root other 15922214 Nov 29 2006 msheehan
drwxrwxrwx 12 msheehan sysadmin 2048 Mar 25 15:39 msheehan
Uso el archivo para descubrir el contenido del archivo y obtengo:
bash-2.03# file msheehan
msheehan: directory
bash-2.03# file msh*
msheehan: ascii text
msheehan: directory
No estoy preocupado por el archivo, pero quiero mantener el directorio, así que intento rm:
bash-2.03# rm msheehan
rm: msheehan is a directory
Así que aquí está mi pregunta de dos partes:
- ¿Qué pasa con esto?
- ¿Cómo elimino cuidadosamente el archivo?
Jonathan
Editar: Gracias por las respuestas chicos, ambos (hasta ahora) fueron útiles, pero conectar el listado a un editor hizo el truco, ala:
bash-2.03# ls -l > jb.txt
bash-2.03# vi jb.txt
Que contenía:
-rw-r--r-- 1 root other 15922214 Nov 29 2006 msheehab^?n
drwxrwxrwx 12 msheehan sysadmin 2048 Mar 25 15:39 msheehan
¡Siempre ten cuidado con la tecla de retroceso!
Sospecho que uno de ellos tiene un personaje extraño en el nombre. Podría intentar usar la expansión del comodín del shell para ver eso: escriba
cat msh*
y presione la tecla de expansión comodín (en mi shell es Ctrl-X *). Debería obtener dos nombres en la lista, quizás uno de los cuales tiene un carácter de escape.
Supongo que estos son, de hecho, dos nombres de archivos diferentes que "se ven" iguales, ya que el archivo de comandos fue capaz de distinguirlos cuando el shell pasó las versiones expandidas del nombre. Pruebe conectar ls en od u otro volcado hexadecimal / octal utilidad para ver si realmente tienen el mismo nombre, o si hay personajes no impresos involucrados.
Y una respuesta rápida a la parte 2 de mi propia pregunta ...
Me imagino que podría cambiar el nombre del directorio, eliminar el archivo y cambiar el nombre del directorio nuevamente a su original.
... Todavía estaría interesado en ver lo que otras personas piensan.
JB
Para ver si hay caracteres especiales en su archivo, pruebe las opciones -b o -q a ls, suponiendo que Solaris 8 tenga esas opciones.
Como otra solución para eliminar el archivo, puede abrir el buscador gráfico de archivos (¡jadeo!) Y arrastrar y soltar el archivo no deseado a la papelera.
Otra solución podría ser mover el archivo a un nombre diferente (el que no tiene el carácter especial desconocido), luego eliminar el nombre del directorio de caracteres especiales con comodines.
mv msheehan temp
rm mshee*
mv temp msheehan
Por supuesto, quiere asegurarse de que solo el archivo que desea eliminar coincida con el comodín. Y, para su caso particular, ya que uno era un directorio y el otro un archivo, este comando podría haberlo resuelto todo:
rmdir msheeha*
Una manera rápida y fácil de ver los caracteres que no son de impresión y los espacios en blanco es canalizar la salida a través de cat -vet , por ejemplo:
# ls -l | cat -vet
Agradable y fácil de recordar!
Para la parte 2, dado que un nombre contiene dos caracteres adicionales, puede usar:
mv sheehan abc
mv sheeha??n xyz
Una vez que hayas hecho eso, volverás a tener nombres de archivos sanos, que puedes arreglar cuando lo necesites.
Puede eliminar usando el iNode
Si usa la opción "-i" en "ls"
$ ls -li
total 1
20801 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a?
20802 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a/?
$ find . -inum 20802 -exec rm {} /;
$ ls -li
total 1
20801 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a?
Tengo un ejemplo (en español) de cómo puedes eliminar un archivo usando iNode en Solaris http://sparcki.blogspot.com/2010/03/como-eliminar-archivos-utilizando-su.html
Urko,