2 votos

Copiar o mover archivos utilizando Finder, pero desde Terminal

Para copiar o mover archivos a una carpeta diferente usando Terminal, la forma obvia es utilizar los comandos cp y mv.

Pero para los usuarios que a menudo colocan información importante en la sección de "Comentarios" de la ventana de "Obtener información" de sus archivos y carpetas, cp y mv tienen la desventaja de que a veces se pierden los comentarios.

La única forma fiable que he encontrado hasta ahora para copiar/mover archivos usando Terminal y preservar comentarios es mediante AppleScript.

Tengo varios fragmentos de código para eso, pero actualmente solo funcionan para demostrar la idea, es decir, no son un script que puedas usar con destinos y destinos arbitrarios como cpx . Aquí están, por si acaso, y aunque estaré muy agradecido por la ayuda para convertirlos en un script que funcione como cpx , eso no es de lo que trata mi pregunta.

Supongamos que tienes

~/
|- dir1/
   |- dir2/
   |  |- dir3/
   |  |- file
   |
   |- dir4/
      |- dir5/

Entonces:

para copiar el archivo a dir3, usa:

osascript << SCRIPT
set currentFolder to "$(pwd)" as POSIX file as text
tell application "Finder"
  duplicate file (currentFolder & "file") to folder (currentFolder & "dir3:")
end tell
SCRIPT

para copiarlo a dir4, utiliza cualquiera de estos

osascript << SCRIPT
set currentFolder to "$(pwd)" as POSIX file as text
set parentFolder to "$(dirname $PWD)" as POSIX file as text
tell application "Finder"
  duplicate file (currentFolder & "file") to folder (parentFolder & "dir4:")
end tell
SCRIPT

o

osascript << SCRIPT
set currentFolder to "$(pwd)" as POSIX file as text
tell application "Finder"
  set parentFolder to (container of folder currentFolder) as text
  duplicate file (currentFolder & "file") to folder (parentFolder & "dir4:")

Y aquí está mi pregunta: ¿Quizás estoy complicando las cosas y en lugar de usar AppleScript, puedo usar algo similar a open -a ?

# Esto funciona. Se utiliza para abrir un archivo usando una aplicación específica
open -a  

# Esto no funciona y solo es una demostración de mi idea
copy -a finder

1voto

red_menace Puntos 111

Un script que se utilizará con osascript puede incluir un controlador run con un parámetro, que será una lista de argumentos pasados a él por el comando (consulte la página del manual para obtener más información). Por ejemplo:

en run args
   try
      if args is not in {missing value, {}, me} then
         - los args serán una lista, parsear los argumentos según se desee
         fijar fuente al primer elemento de args como archivo POSIX como texto - Finder no conoce el formato POSIX
         fijar destino al segundo elemento de args como archivo POSIX como texto
         decir aplicación "Finder" a duplicar archivo fuente a carpeta destino
      fin si
      return "hecho." - no es necesario la representación de texto de la referencia de Finder
   en error errmess
      mostrar alerta "Error de Script" mensaje errmess
   fin try
end run

Además del texto, el script se puede guardar en un archivo, colocarlo en un envoltorio/acceso directo de bash/zsh, etc. Luego se puede llamar con osascript usando los argumentos deseados - por ejemplo, el script anterior se puede guardar en algún lugar y llamar con:

osascript /ruta/al/script /ruta/del/archivo/de/origen /ruta/de/la/carpeta/de/destino

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X