Página principal » cómo » ¿Cómo hacer que un solo archivo aparezca en varias carpetas al mismo tiempo?

    ¿Cómo hacer que un solo archivo aparezca en varias carpetas al mismo tiempo?

    Si tiene una gran cantidad de carpetas configuradas para su trabajo y necesita usar el mismo archivo de script en todas ellas durante la jornada laboral, ¿cuál es la forma más fácil de hacerlo que tras copiar y pegar mucho? La publicación de preguntas y respuestas de SuperUser de hoy tiene algunas respuestas y consejos útiles para un lector frustrado.

    La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..

    Captura de pantalla cortesía de csaveanu (Flickr).

    La pregunta

    Lector superusuario Elliot está buscando la mejor manera de que el mismo archivo parezca estar en varias carpetas al mismo tiempo:

    Tengo más de 50 carpetas, cada una de las cuales contiene una gran cantidad de datos que deben procesarse. Todos ellos se procesan utilizando el mismo código exacto, utilizando os.path.dirname (os.path.realpath (archivo)) para obtener el directorio en el que se encuentra la secuencia de comandos de Python para que el usuario no necesite una edición manual, solo tienen que hacer doble clic.

    Necesito que la secuencia de comandos aparezca como si estuviera en cada carpeta, mientras que en realidad solo estoy en un lugar para poder editarla una vez, luego, cuando se ejecuta desde cualquiera de estas ubicaciones, la ruta de la carpeta es correcta. La alternativa es editar el master y luego pegarlo una carpeta a la vez en las más de 50 carpetas cada vez que actualizo el código, lo cual es muy tedioso y propenso a errores. En Linux, podría configurarlo con un enlace simbólico, pero no puedo encontrar una manera de hacer esto con Windows.

    Alternativamente, una forma de pegar el archivo en todos los directorios de destino a la vez, en lugar de uno a la vez, lograría el mismo objetivo.

    ¿Hay alguna forma de hacerlo en lugar de copiar y pegar el archivo de script una carpeta a la vez??

    La respuesta

    El colaborador de SuperUser gronostaj tiene la respuesta para nosotros:

    Tu necesitas un Enlace simbólico o un Enlace duro.

    Enlaces simbólicos (o Enlaces simbólicos para abreviar) son bastante similares a los accesos directos: hay un archivo real y varias referencias (Enlaces simbólicos) a ello. Incluso tienen esa pequeña flecha en los iconos. A diferencia de los atajos, Enlaces simbólicos puede tener cualquier extensión.

    Enlaces duros vincular un archivo en un disco duro a una ubicación en el árbol de directorios. Cada archivo tiene al menos una Enlace duro, De lo contrario no existiría en ningún directorio. Si un archivo tiene múltiples Enlaces duros, el original no se puede distinguir de los otros y el archivo existe físicamente en una sola ubicación.

    Ambos tienen sus limitaciones:

    • Algunos programas no funcionan bien con Enlaces simbólicos.
    • Al borrar el archivo original se deja todo su Enlaces simbólicos roto.
    • No se puede Enlace duro carpetas (pero puede crear un Directory Junction si un Enlace simbólico no es suficiente).
    • Creando particiones cruzadas Enlaces duros es imposible.

    Enlaces simbólicos suelen ser suficientes.

    Para crear un enlace simbólico o un enlace duro:

    1. Inicie una línea de comando privilegiada: pulse la tecla Clave de Windows, tipo cmd, entonces presione Ctrl + Shift + Enter.

    2. Ejecute el comando mklink:

    • mklink link_name link_target para un archivo Enlace simbólico
    • mklink / d link_name link_target para una carpeta Enlace simbólico
    • mklink / h link_name link_target para un archivo Enlace duro
    • mklink / j link_name link_target para un Directory Junction

    ¿Tienes algo que agregar a la explicación? Apaga el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.