Quería crear un archivo llamado test
. Accidentalmente corro en mkdir test
lugar de touch test
.
¿Es posible convertir el test
directorio en un archivo llamado test
?
¿Qué pasa con la conversión de un archivo nombrado test
en un directorio con el mismo nombre?
rm -f test && touch test
excepto esto, realmente no lo séRespuestas:
Esto no es posible para ningún Unix o Linux que haya tocado.
Bajo algunos Unixes más antiguos, los directorios son archivos, especialmente marcados, pero aún son archivos. Solía poder leer un directorio con
cat
SunOS, por ejemplo. Muchos sistemas de archivos modernos pueden tener directorios como árboles B + o alguna otra estructura de datos en disco. Por lo tanto, convertir un archivo en un directorio o viceversa siempre requerirá una eliminación y una recreación con el mismo nombre.fuente
No, no existe tal comando porque no tendría absolutamente ningún sentido. Su pregunta es como pedir una forma de transformar una caja en un rectángulo plano. ¿Qué harías con las cosas en el cuadro (directorio)? ¿Cómo correspondería el rectángulo a la caja de donde vino?
Los archivos y directorios cumplen funciones completamente diferentes. Si bien un directorio es de hecho un archivo en los sistemas * nix, eso solo se aplica a las partes internas del sistema y no a lo que usted, el usuario, ve. Por lo tanto, convertir un archivo a un directorio, o viceversa, siempre implicará eliminar el archivo y crear el directorio. Lo mejor que puede esperar es usar el mismo inodo pero, de nuevo, no tiene mucho sentido.
fuente
Crea una función para hacer lo que quieras. (
bash
u otro Bourne / POSIX como shell asumido)Deliberadamente uso
rmdir
cual fallará siadir
no es un directorio o no está vacío (no-f
forzar).touch
solo se ejecutará sirmdir
tiene éxito.Puede poner la definición de la función en su archivo de personalización de shell (
.bashrc
parabash
).fuente
--
?--
marca el final de las banderas asírmdir
ytouch
saben nada más allá que es un nombre de archivo, incluso si se comienza con-
.Para aquellos que se preguntan por qué querrían hacer esto, sigan este hilo:
https://community.linksys.com/t5/Wireless-Routers/Media-files-changing-to-folder-types/td-p/504192/highlight/true
Aparentemente, un error en el firmware volcó el bit en la entrada del directorio para el archivo, haciendo que el sistema operativo piense que es una carpeta en lugar de un archivo.
Si bien no tengo el enrutador Linksys en cuestión, algo cambió todos mis archivos .jpg en carpetas vacías. Si hay alguna forma de voltear el bit (o lo que sea) que dice que una entrada de directorio NTFS es una carpeta frente a un archivo, me gustaría saberlo.
Una de las soluciones en ese hilo de 2 años dice que si el disco duro que contiene las carpetas que solían ser archivos está conectado a una Mac con OS / X, la Mac los verá nuevamente como archivos y se puede copiar a una carpeta en la Mac. No tengo una Mac para probar eso, así que si alguien sabe una forma de voltear el bit ...
fuente
Primero, obtenga acceso al terminal y ejecute
ls -al file
con el archivo que es el archivo que desea convertir nuevamente en una carpeta ACTUAL. Si hay archivos y subdirectorios en la lista, significa que su "archivo" era anteriormente una carpeta con contenido real y puede continuar:Ejecutar:
O
Reinicie el sistema y recupere el acceso a la terminal y ejecute:
O
RECUERDE: "archivo" debe ser reemplazado por el archivo que desea volver a convertir en una carpeta REAL.
Esta es solo una forma arbitraria de resolver este problema, pero crea anomalías de permisos que puede usar
fsck -f
para corregir (mientras no está montado, por supuesto) o establecer manualmente nuevos permisos según sea necesario.DE NUEVO, esta es solo una forma comprobada de evitar tener que eliminar el archivo que anteriormente era una carpeta no vacía.
fuente