Ajuste de la distinción de mayúsculas y minúsculas

La distinción entre mayúsculas y minúsculas determina si las letras mayúsculas (FOO.txt) y minúsculas (foo.txt) se controlan como distintas (distinguen mayúsculas de minúsculas) o equivalentes (sin distinción entre mayúsculas y minúsculas) en un nombre de archivo o directorio.

  • Distingue entre mayúsculas y minúsculas: FOO.txt ≠ foo.txt ≠ Foo.txt
  • Sin distinción entre mayúsculas y minúsculas: FOO.txt = foo.txt = Foo.txt

Diferencias entre la distinción de mayúsculas y minúsculas de Windows y Linux

Al trabajar con archivos y directorios de Linux y Windows, es posible que tenga que ajustar cómo se controla la distinción de mayúsculas y minúsculas.

Comportamiento estándar:

  • El sistema de archivos de Windows no distingue mayúsculas de minúsculas en los nombres de archivo y directorio. FOO.txt y foo.txt se tratarán como archivos equivalentes.
  • El sistema de archivos de Linux distingue mayúsculas de minúsculas en los nombres de archivo y directorio. FOO.txt y foo.txt se tratarán como archivos distintos.

El sistema de archivos de Windows admite la configuración de la distinción entre mayúsculas y minúsculas con marcas de atributo por directorio. Aunque el comportamiento estándar no distingue mayúsculas de minúsculas, puede asignar una marca de atributo para distinguir mayúsculas y minúsculas de directorio, de modo que reconozca los archivos y carpetas de Linux que solo pueden diferir por mayúsculas y minúsculas.

Esto puede ser especialmente cierto al montar unidades en el sistema de archivos del Subsistema de Windows para Linux (WSL). Cuando se trabaja en el sistema de archivos del WSL, se ejecuta Linux, por lo que se distingue mayúsculas de minúsculas en los archivos y directorios de forma predeterminada.

Nota:

En el pasado, si tenía archivos cuyo nombre solo difería por caso, Windows no podía acceder a estos archivos, ya que las aplicaciones de Windows no distinguen entre mayúsculas y minúsculas en el sistema de archivos y no pueden distinguir entre archivos cuyos nombres solo difieren por mayúsculas y minúsculas. Aunque el Explorador de archivos de Windows mostrará ambos archivos, solo se abrirá uno independientemente de lo que seleccione.

Cambiar la distinción entre mayúsculas y minúsculas de archivos y directorios

En los pasos siguientes se explica cómo cambiar un directorio en el sistema de archivos de Windows para que distinga mayúsculas de minúsculas y reconozca archivos y carpetas que solo difieren por mayúsculas y minúsculas.

Advertencia

Algunas aplicaciones de Windows, con la suposición de que el sistema de archivos no distingue mayúsculas de minúsculas, no usan las mayúsculas correctas para hacer referencia a los archivos. Por ejemplo, no es raro que las aplicaciones transformen los nombres de archivo para usar mayúsculas o minúsculas. En los directorios marcados como que distinguen entre mayúsculas y minúsculas, esto significa que estas aplicaciones ya no pueden acceder a los archivos. Además, si las aplicaciones de Windows crean nuevos directorios en un árbol de directorios en el que se usan archivos que distinguen mayúsculas de minúsculas, estos directorios no distinguen mayúsculas de minúsculas. Esto puede dificultar el trabajo con herramientas de Windows en directorios que distinguen entre mayúsculas y minúsculas, por lo que tenga cuidado al cambiar la configuración de distinción de mayúsculas y minúsculas del sistema de archivos de Windows.

Inspección de la distinción entre mayúsculas y minúsculas actual

Para comprobar si un directorio distingue mayúsculas de minúsculas en el sistema de archivos de Windows, ejecute el comando:

fsutil.exe file queryCaseSensitiveInfo <path>

Reemplace <path> por la ruta de acceso del archivo. En el caso de un directorio en el sistema de archivos de Windows (NTFS), <path> tendrá un aspecto similar al siguiente: C:\Users\user1\case-test o si ya está en el directorio user1, podría ejecutar lo siguiente: fsutil.exe file setCaseSensitiveInfo case-test

Modificación de la distinción de mayúsculas y minúsculas

La compatibilidad con la distinción de mayúsculas y minúsculas por directorio comenzó en Windows 10, compilación 17107. En Windows 10, compilación 17692, se ha actualizado la compatibilidad para incluir la inspección y modificación de la marca de distinción de mayúsculas y minúsculas de un directorio desde WSL. La distinción entre mayúsculas y minúsculas se expone mediante un atributo extendido denominado system.wsl_case_sensitive. El valor de este atributo será 0 para los directorios que no distinguen mayúsculas de minúsculas y 1 para los directorios que distinguen mayúsculas de minúsculas.

Para cambiar la distinción entre mayúsculas y minúsculas de un directorio, es necesario ejecutar permisos elevados (ejecutar como administrador). Cambiar la marca de distinción de mayúsculas y minúsculas también requiere permisos de "Escribir atributos", "Crear archivos", "Crear carpetas" y "Eliminar subcarpetas y archivos" en el directorio. Consulte la sección de solución de problemas para obtener más información sobre esto.

Para cambiar un directorio en el sistema de archivos de Windows de modo que distinga mayúsculas de minúsculas (FOO ≠ foo), ejecute PowerShell como administrador y use el comando:

fsutil.exe file setCaseSensitiveInfo <path> enable

Para volver a cambiar un directorio del sistema de archivos de Windows al valor predeterminado sin distinción entre mayúsculas y minúsculas (FOO = foo), ejecute PowerShell como administrador y use el comando:

fsutil.exe file setCaseSensitiveInfo <path> disable

Un directorio debe estar vacío para cambiar el atributo de marca de distinción de mayúsculas y minúsculas en ese directorio. No se puede deshabilitar la marca de distinción entre mayúsculas y minúsculas en un directorio que contenga carpetas o archivos cuyos nombres solo difieren en mayúsculas y minúsculas.

Herencia de distinción entre mayúsculas y minúsculas

Al crear nuevos directorios, esos directorios heredarán la distinción entre mayúsculas y minúsculas de su directorio primario.

Advertencia

Hay una excepción a esta directiva de herencia cuando se ejecuta en modo de WSL 1. Cuando una distribución se ejecuta en modo de WSL 1, la marca de distinción entre mayúsculas y minúsculas por directorio no se hereda; los directorios creados en un directorio con distinción entre mayúsculas y minúsculas no distinguen automáticamente mayúsculas de minúsculas. Debe marcar explícitamente cada directorio como que distingue entre mayúsculas y minúsculas

Opciones de distinción de mayúsculas y minúsculas para montar una unidad en el archivo de configuración de WSL

La distinción entre mayúsculas y minúsculas se puede administrar al montar una unidad en el Subsistema de Windows para Linux mediante el archivo de configuración de WSL. Cada distribución de Linux que haya instalado puede tener su propio archivo de configuración de WSL, denominado /etc/wsl.conf. Para obtener más información sobre cómo montar una unidad, consulte Introducción al montaje de un disco Linux en WSL 2.

Para configurar la opción de distinción entre mayúsculas y minúsculas en el archivo wsl.conf al montar una unidad:

  1. Abra la distribución de Linux que va a usar (por ejemplo, Ubuntu).
  2. Cambie los directorios hasta que vea la carpeta etc (esto puede requerir que escriba cd .. desde el directorio home).
  3. Enumere los archivos del directorio etc para ver si ya existe un archivo wsl.conf (use el comando ls o explorer.exe . para ver el directorio con el Explorador de archivos de Windows).
  4. Si el archivo wsl.conf aún no existe, puede crearlo mediante: sudo touch wsl.conf o mediante la ejecución de sudo nano /etc/wsl.conf, que creará el archivo al guardarlo desde el editor Nano.
  5. Las siguientes opciones están disponibles para agregar al archivo wsl.conf:

Configuración predeterminada: dir para habilitar la distinción de mayúsculas y minúsculas por directorio.

[automount]
options = case = dir

Distinción entre mayúsculas y minúsculas no disponible (todos los directorios de las unidades NTFS montadas no distinguen mayúsculas de minúsculas): off

[automount]
options = case = off

Trate todos los directorios de la unidad (NTFS) como que distinguen entre mayúsculas y minúsculas: force

[automount]
options = case = force

Esta opción solo se admite para montar unidades en distribuciones de Linux que se ejecutan como WSL 1 y puede requerir una clave de registro. Para agregar una clave de registro, puede usar este comando desde un símbolo del sistema con privilegios elevados (administrador): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1.

Tendrá que reiniciar WSL después de realizar cambios en el archivo wsl.conf para que esos cambios surtan efecto. Puede reiniciar WSL mediante el comando: wsl --shutdown

Sugerencia

Para montar una unidad (que usa el complemento del sistema de archivos DrvFs para que el disco esté disponible en /mnt, como /mnt/c, /mnt/d, etc.) con una configuración de distinción de mayúsculas y minúsculas específica para todas las unidades, use /etc/wsl.conf como se ha descrito anteriormente. Para establecer las opciones de montaje predeterminadas para una unidad específica, use el archivo /etc/fstab para especificar estas opciones. Para obtener más opciones de configuración de WSL, consulte Configuración los ajustes de inicio de distribución con wslconf.

Cambio de la distinción entre mayúsculas y minúsculas en una unidad montada en una distribución de WSL

Las unidades con formato NTFS montadas en una distribución WSL no distinguen mayúsculas de minúsculas de forma predeterminada. Para cambiar la distinción entre mayúsculas y minúsculas de un directorio de una unidad montada en una distribución WSL (por ejemplo, Ubuntu), siga los mismos pasos que se enumeran anteriormente para el sistema de archivos de Windows. (Las unidades EXT4 distinguen mayúsculas de minúsculas de forma predeterminada).

Para habilitar la distinción de mayúsculas y minúsculas en un directorio (FOO ≠ foo), use el comando:

fsutil.exe file setCaseSensitiveInfo <path> enable

Para deshabilitar la distinción entre mayúsculas y minúsculas en un directorio y volver al valor predeterminado sin distinción entre mayúsculas y minúsculas (FOO = foo), use el comando:

fsutil.exe file setCaseSensitiveInfo <path> disable

Nota:

Si cambia la marca que distingue mayúsculas de minúsculas en un directorio existente para una unidad montada mientras se ejecuta WSL, asegúrese de que WSL no tenga referencias a ese directorio o, de lo contrario, el cambio no será efectivo. Esto significa que ningún proceso de WSL debe abrir el directorio (o sus descendientes) como directorio actual.

Configuración de la distinción de mayúsculas y minúsculas con Git

El sistema de control de versiones de Git también tiene una configuración que se puede usar para ajustar la distinción entre mayúsculas y minúsculas de los archivos con los que está trabajando. Si usa Git, puede que desee ajustar la configuración git config core.ignorecase.

Para establecer que Git distinga entre mayúsculas y minúsculas (FOO.txt ≠ foo.txt), escriba:

git config core.ignorecase false

Para establecer Git que no distinga entre mayúsculas y minúsculas (FOO.txt = foo.txt), escriba:

git config core.ignorecase true

Establecer esta opción en false en un sistema de archivos que no distingue mayúsculas de minúsculas puede provocar errores confusos, conflictos falsos o archivos duplicados.

Para obtener más información, consulte la Documentación de configuración de Git.

Solucionar problemas

Mi directorio tiene archivos con mayúsculas y minúsculas y requiere distinción entre mayúsculas y minúsculas, pero las herramientas de Windows FS no reconocerán estos archivos.

Para usar herramientas del sistema de archivos de Windows para trabajar en un directorio de Linux que contiene archivos de mayúsculas y minúsculas mixtas, deberá crear un directorio nuevo y establecerlo como que distingue entre mayúsculas y minúsculas y, a continuación, copiar los archivos en ese directorio (mediante git clone o untar). Los archivos permanecerán en mayúsculas y minúsculas mixtas. (Tenga en cuenta que, si ya ha intentado mover los archivos a un directorio que no distingue mayúsculas de minúsculas y hubo conflictos, es probable que haya algunos archivos que se sobrescribieron y que ya no estarán disponibles).

Error: El directorio no está vacío

No puede cambiar la configuración de distinción entre mayúsculas y minúsculas en un directorio que contenga otros archivos o directorios. Intente crear un nuevo directorio, cambiar la configuración y, a continuación, copiar los archivos de mayúsculas y minúsculas en él.

Error: Acceso denegado

Asegúrese de que tiene los permisos "Escribir atributos", "Crear archivos", "Crear carpetas" y "Eliminar subcarpetas y archivos" en el directorio necesario para cambiar la distinción de mayúsculas y minúsculas. Para comprobar esta configuración, abra el directorio en el Explorador de archivos de Windows (desde la línea de comandos, use el comando: explorer.exe .). Haga clic con el botón derecho en el directorio y seleccione Propiedades para abrir el ventana Propiedades del documento y, a continuación, seleccione Editar para ver o cambiar los permisos del directorio.

Properties windows to view or change permissions on NTFS directories

Error: se requiere un volumen NTFS local para esta operación

El atributo de distinción entre mayúsculas y minúsculas solo se puede establecer en directorios dentro de un sistema de archivos con formato NTFS. Los directorios del sistema de archivos de WSL (Linux) distinguen mayúsculas de minúsculas de forma predeterminada (y no se pueden establecer para que no distingan entre mayúsculas y minúsculas mediante la herramienta fsutil.exe).

Recursos adicionales