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 entre 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 trata los nombres de archivo y directorio como no distingue mayúsculas de minúsculas. FOO.txt y foo.txt se tratarán como archivos equivalentes.
  • El sistema de archivos de Linux trata los nombres de archivo y directorio como distingue mayúsculas de minúsculas. 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 Subsistema de Windows para Linux (WSL). Cuando se trabaja en el sistema de archivos WSL, se ejecuta Linux, por lo que los archivos y directorios se tratan como distinguen mayúsculas de minúsculas de forma predeterminada.

Nota

En el pasado, si tenía archivos cuyo nombre solo difiere por caso, Windows no pudo acceder a estos archivos, ya que las aplicaciones de Windows tratan el sistema de archivos como sin distinción entre mayúsculas y minúsculas y no pueden distinguir entre archivos cuyos nombres solo difieren en el caso. Aunque Windows Explorador de archivos 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 distingue mayúsculas de minúsculas y reconocerá 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 use el caso correcto para hacer referencia a los archivos. Por ejemplo, no es raro que las aplicaciones transforme los nombres de archivo para usar mayúsculas o minúsculas. En los directorios marcados como distinguen mayúsculas de 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 confidenciales 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 de 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 por <path> la ruta de acceso del archivo. En el caso de un directorio en el sistema de archivos de Windows (NTFS), tendrá un <path> aspecto similar al siguiente: C:\Users\user1\case-test o si ya está en el user1 directorio, 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 actualizó 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 distingue 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 WSL 1. Cuando una distribución se ejecuta en modo 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 distingue mayúsculas de 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 wsl.conf archivo al montar una unidad:

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

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 distingue mayúsculas de 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 wsl.conf archivo 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 /etc/fstab archivo para especificar estas opciones. Para obtener más opciones de configuración de WSL, consulte Configuración por configuración 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 (es decir, 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 git config core.ignorecase configuración.

Para establecer Git que distingue mayúsculas de minúsculas (FOO.txt ≠ foo.txt), escriba:

git config core.ignorecase false

Para establecer Git que no distingue mayúsculas de 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 más información, consulte la documentación de Configuración de Git.

Solución de problemas

Mi directorio tiene archivos con mayúsculas y minúsculas y requieren 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 linux que contiene archivos de mayúsculas y minúsculas mixtas, deberá crear un directorio nuevo y establecerlo en distingue mayúsculas de 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 Windows Explorador de archivos (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 documento y, a continuación, seleccione Editar para ver o cambiar los permisos del directorio.

Ventanas de propiedades para ver o cambiar permisos en directorios NTFS

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 WSL (Linux) distinguen mayúsculas de minúsculas de forma predeterminada (y no se pueden establecer para que no distinguen mayúsculas de minúsculas mediante la herramienta fsutil.exe).

Recursos adicionales