Es tal cosa posible? Tengo este código que se puede hacer al respecto:
set now to do shell script "date +%Y-%m-%d' '%H.%M.%S"
tell application "Finder"
set finderSelList to selection as alias list
try
set fileDir to parent of first item of finderSelList as alias
on error
return "No selection"
end try
set dupeList to (duplicate finderSelList to fileDir) as list
repeat with i from 1 to (count of dupeList)
set ((dupeList)'s (item i)'s name) to ((finderSelList)'s (item i)'s name) & " [" & now & "]." & ((finderSelList)'s (item i)'s name extension)
end repeat
end tell
return dupeList
Sin embargo, no es tan limpia que es, se puede ver que los archivos duplicados son nombrados <file name> 2.<file extension>
, y un segundo despues se pone nombre a <file name> [date].<file extension>
, que es bastante chocante ver.
Tengo un bash solución que está limpio (es decir no discordante), pero usando el Buscador de copia de archivos tiene algunas ventajas (como las barras de progreso, la cancelación de las operaciones de copia, diferentes xattr manipulación, etc.):
finderSelection=$(osascript getfinderselection.scpt)
now=$(date +%Y-%m-%d' '%H.%M.%S)
if [ "$finderSelection" ]
then
echo "$finderSelection" |
while IFS= read -r file
do
fileDir=$(dirname "$file")
fileBaseN=$(basename "$file")
fileName="${fileBaseN%.*}"
fileExt="${fileBaseN##*.}"
cp -r "$file" "$fileDir/[$now] $fileName.$fileExt"
done
afplay "/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/system/Volume Mount.aif"
fi
...y getfinderselection.scpt contiene:
tell application "Finder"
set finderSelList to selection as alias list
end tell
if finderSelList ≠ {} then
repeat with i in finderSelList
set contents of i to POSIX path of (contents of i)
end repeat
set AppleScript's text item delimiters to linefeed
finderSelList as text
end if
En esta aplicación, cuando bash duplicados de los archivos, no se ve ningún paso intermedio en el cual los archivos se cambia el nombre. No-cuando los duplicados de spawn, los nombres de los archivos ya están finalizados.
Así que...
- Hay una manera de implementar la idea en AppleScript, pero no la tienen tan chocante y mucho más suave, como la forma de bash no?
- En primer lugar, se deben ejecutar con el AppleScript de la solución o de la fiesta?
- ¿De qué otra manera puede la solución preferida ser mejor? Para el AppleScript solución, necesito encontrar una manera de eliminar la extensión del archivo de
((finderSelList)'s (item i)'s name)
, y también eliminar el trailing.
cuando se trata con carpetas. Para la fiesta de la solución, el nombre del archivo y extarchivo salidas, especialmente para las carpetas, puede ser inesperado y desordenado.