Hmmm, eso suena realmente extraño. Me acaba de ejecutar su código de ejemplo en algunos archivos de prueba y no alterar el Ocultar la extensión de la bandera. Estás seguro de que los archivos no tengan esa opción activada antes de ejecutar el comando? Has probado a crear un par de archivos nuevos, verificar manualmente que ninguno tiene la opción seleccionada y, a continuación, ejecuta el comando en ellos?
Yo no puedo ayudar en términos de "cómo evitar esta" parte de tu pregunta, como puedo no logran recrear su problema en mi final. Pero usted puede deshabilitar la configuración mediante programación. Si usted tiene Xcode instalado, 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 quieres hacer el proceso inverso (es decir, activar la configuración), puede hacerlo cambiando la minúscula e
a mayúsculas E
.
# Enables "Hide extension" for all visible files in current directory
for file in *; do
SetFile -a E "$file"
done
Si usted no tiene Xcode instalado, consulte esta respuesta en superusuario para obtener instrucciones sobre cómo hacer lo mismo con AppleScript.
Por el camino, usted debe tratar de evitar el análisis de la salida de ls
como se ha hecho en el ejemplo. Puede causar problemas si alguno de los archivos que están en el procesamiento de contener un carácter de nueva línea en su nombre de archivo. Esto es particularmente importante si alguna vez escribir un script que será el procesamiento de los archivos que usted no ha creado a sí mismo (ya que no sé cómo se llama). Ver por Qué usted no debe analizar la salida de ls(1) para más detalles.