Estoy buscando una manera, a través de la terminal, para cambiar si la extensión de un archivo específico se muestra o no en el Finder, algo así como:
$ hideextension ~/music/somesong.mp3
Sin tener que abrir Obtener información y cambiar la casilla de verificación, ya que es enormemente tedioso.
Planeo incorporarlo en un script que estoy llamando a través de un atajo usando FastScripts. Me gustaría intentar alejarme de las secuencias de comandos de la GUI, ya que eso se siente impuro, aunque cualquier idea sobre cómo lograr esto es bienvenida.
macos
command-line
file-management
file-extension
joshua.thomas.bird
fuente
fuente
Respuestas:
La única forma real de cambiar esto a través de la GUI es hacer clic en Ocultar extensión en la ventana de Información del Finder . Marcar esto cambia el
com.apple.FinderInfo
atributo extendido, que normalmente no puede editar, al menos no fácilmente. Sin embargo, podemos usar una herramienta para hacerlo por nosotros.Para que funcione a continuación, obviamente debe tener Mostrar todas las extensiones de archivo sin marcar en las preferencias del Finder.
A través de AppleScript
AppleScript ofrece esta funcionalidad con el
set extension hidden
comando. Obviamente necesita unalias
objeto de archivo. Podemos obtener eso, por ejemplo, a través de un diálogo. Aquí hay un ejemplo de trabajo mínimo.Para revertir, solo intercambie
true
confalse
aquí. La llamada completa es entonces, por ejemplo:También puede ejecutar esto directamente desde un archivo de script (gracias @DanielBeck por la adición):
Guarde esto como
filename.scpt
y ejecútelo desde la línea de comandos con:Con el
SetFile
comandoSi tiene instalado Xcode, obtendrá el
SetFile(1)
binario, que hace exactamente lo que desea (y ofrece algunas funciones más relacionadas con los atributos del archivo):Ocultar extensión:
Mostrar extensión nuevamente:
fuente
on run argv [newline] tell application "Finder" to set extension hidden of (POSIX file (first item of argv) as alias) to true [newline] end run
use asosascript filename.scpt targetfile
.SetFile
está en desuso desde Xcode 6 . También el enlace a la página del manual ha caducado.Gracias slhck por tu respuesta, me ayudó mucho a conseguir lo que quería hacer.
Entonces, como me gustan los accesos directos, creé un servicio "Ejecutar script de Shell" a través de Automator.
Luego fui a Finder -> Preferencias de servicios y agregué un acceso directo al Servicio.
Espero eso ayude. =)
fuente
STATUS=
línea le falta una marca de retroceso al final. Además, en mi Mac + XCode, el comandoGetFileInfo
tiene una G mayúsculaHay una opción más si desea mostrar la extensión de archivo que está oculta actualmente: Finder almacena esta opción de "ocultar extensión" en
com.apple.FinderInfo
el atributo de archivo extendido. Puede verificarlo usted mismo ejecutando este comando que enumera todos los atributos extendidos:Entonces, para mostrar la extensión, puede eliminar ese atributo:
Pero tenga en cuenta que Finder almacena otros metadatos como el color de la etiqueta en este atributo, por lo que se perderán estos metadatos. Y, dado que el atributo es binario, no puede modificarlo fácilmente.
fuente
Para tener solo un argumento en la línea de comando (
$ hideextension ~/music/somesong.mp3
), puede hacer que su applecript se convierta en un script de shell. Es posible usar osascript en shebang (#!/usr/bin/osascript
) como en el siguiente código. Para proceder :#!/usr/bin/osascript
) al comienzo del archivoEn Terminal, hazlo ejecutable:
Ahora puedes ejecutarlo:
Entonces, el código para ilustrar:
fuente
Incluso si
SetFile
está en desuso desde Xcode 6, todavía está disponible en XCode 11, por lo que puede esperar que permanezca en las Herramientas de línea de comandos en el futuro previsible ...https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_11/Command_Line_Tools_for_Xcode_11.dmg
fuente