Hmmm, eso suena realmente extraño. Acabo de ejecutar su código de muestra en algunos archivos de prueba y no modificó la marca Ocultar extensión en absoluto. ¿Está seguro de que los archivos no tenían esa opción activada antes de ejecutar su comando? ¿Ha intentado crear algunos archivos nuevos, verificando manualmente que ninguno tiene esa opción seleccionada y luego ejecutando su comando en ellos?
No puedo ayudarlo en cuanto a la parte de su pregunta sobre "cómo evitar esto", ya que no puedo recrear su problema por mi parte. Pero puedes deshabilitar esa configuración programáticamente. Si tiene instalado Xcode, puede hacer lo siguiente:
# Disables "Hide extension" for all visible files in current directory
for file in *; do
SetFile -a e "$file"
done
Tenga en cuenta que si alguna vez desea revertir el proceso (es decir, activar la configuración), puede hacerlo cambiando la minúscula e
a una mayúscula E
.
# Enables "Hide extension" for all visible files in current directory
for file in *; do
SetFile -a E "$file"
done
Si no tiene Xcode instalado, consulte esto responde en el superusuario para obtener instrucciones sobre cómo hacer lo mismo con AppleScript.
Por cierto, debes tratar de evitar analizar la salida de ls
como lo hiciste en tu ejemplo. Puede causar problemas si alguno de los archivos que está procesando contiene un carácter de nueva línea en su nombre de archivo. Esto es particularmente importante si alguna vez escribes un script que procesará archivos que no has creado tú mismo (ya que no sabrás cómo se nombran). Consulte Por qué no debe analizar la salida de ls (1) para obtener más información.