Manejo de extensiones de nombre de archivo - bash vs oascript

1

Tengo un script que cierra las ventanas abiertas, pero solo funciona cuando he habilitado la preferencia "mostrar todas las extensiones de nombre de archivo" del Finder. ¿Existe una forma sólida de lograr esto independientemente del estado de la preferencia de extensión de nombre de archivo? Supongo que podría intentar cerrar el archivo con y sin la extensión, pero esa es una solución fea

cd somedir
for file in * ; do
  echo file name is $file

osascript<<EOF
  tell application "Preview"
  close (every window whose name is "$file")
  end tell
EOF
  sleep 1
done
Leonard
fuente

Respuestas:

1

Como la variable SHELL $filesiempre tendrá una extensión de archivo en el tacto, es necesario utilizar la pathpropiedad de vista previa 's document, que contiene la ruta de acceso completa del archivo abierto, incluyendo la extensión de archivo:

cd somedir
for file in * ; do
  echo file name is $file

osascript<<EOF
  tell application "Preview"
    close (every document whose path ends with "$file")
  end tell
EOF
  sleep 1
done

Sin embargo, esto es lento, incluso sin sleepdemora. Otra forma de hacerlo es enumerar los archivos en AppleScript:

osascript<<EOF
  use sys : application "System Events"
  use Preview : application "Preview"

  script
    property list : displayed name of every file ¬
                    in sys's folder "$somedir"
  end script

  repeat with f in result's list
    tell Preview's document named f to if exists ¬
    then close
  end repeat
EOF

Esto es casi instantáneo, y la displayed namepropiedad usa específicamente el nombre tal como se muestra en Finder , con o sin su extensión. Por lo tanto, coincide con la namepropiedad del documento de vista previa .

CJK
fuente