varios una todos significa que permisos otro mover los directorio dar crear copiar comandos carpeta archivos file directory filesystems solaris

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:

  1. ¿Qué pasa con esto?
  2. ¿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,