El ejemplo shell script código que se muestra a continuación, lo que se probó en MacOS Catalina guardado como shell script y ejecutado en Terminal .
Hace uso de la utilidad de terceros fileicon
que es un shell script que utilizan todos los nativos MacOS para extraer los iconos del carpetas que tienen un icono personalizado. Utilicé las instrucciones de instalación manual en la página web enlazada.
El ejemplo shell script código crea un trabajo carpeta dentro del Documentos carpeta con la convención de nomenclatura de, por ejemplo, Documentos Carpetas Imágenes - 1632963703 donde, por ejemplo 1632963703 son los segundos transcurridos desde época . Dentro de este carpeta , a estructura jerárquica de carpetas se crea en el nombre de ruta calificado para cada carpeta de la Documentos carpeta que tiene un icono personalizado, donde un .icns archivo se crea como la imagen extraída y un .png archivo creado a partir de él. El archivos/carpetas se denominan según el nombre de la carpeta con el icono personalizado. De esta manera no tendrás problemas para saber a dónde van una vez que se mueven a Linux .
Para utilizar el ejemplo shell script código , en Terminal , ejecute lo siguiente comando compuesto :
f='extracticons'; touch "$f"; open -e "$f"; chmod +x "$f"
Copiar y pegar el ejemplo shell script código que se muestra a continuación, en el extracciones documento y luego guárdalo.
A continuación, debe mover el extracticons
shell script a un directorio situado dentro del de la cáscara PATH
.
Lo he trasladado a /usr/local/bin
Por ejemplo,..:
sudo mv -v extracticons /usr/local/bin/
Ahora está listo para su uso, sólo tienes que escribir extracticons
y pulse entrar en .
Ejemplo shell script código :
#!/bin/zsh
doc_dir="$HOME/Documents"
icns_dir="${doc_dir}/Documents Folders Images - $(date +%s)"
while IFS= read -r line; do
[[ "${line}" =~ ($HOME/)(Documents/.*)(/Icon) ]] || continue
mkdir -p "${icns_dir}/${match[2]}"
cd "${icns_dir}/${match[2]}" || exit
printf '%s\n' 'Creating .icns file...'
fileicon get "${match[1]}${match[2]}"
done < <(find "${doc_dir}" -type f -name 'Icon?' -print)
while IFS= read -r line; do
dir_path="${line%/*}"
file_name="${line##*/}"
cd "${dir_path}" || exit
printf '%s\n' 'Creating .png file...'
sips -s format png "${file_name}" --out "${file_name%.*}.png"
done < <(find "${icns_dir}" -type f -name '*.icns' -print)
cd "${icns_dir}" || exit
printf '%s\n' 'Creating Zip Archive...'
zip -r 'DocumentsFoldersIcons.zip' 'Documents'
printf '%s\n' "Deleting ${icns_dir}/Documents"
rm -r "${icns_dir}/Documents"
Notas:
El último bloque de código en el ejemplo shell script código crea un archivo zip archivo de la estructura jerárquica de carpetas y luego se limpia borrando el estructura jerárquica de carpetas dejando un archivo llamado DocumentosCarpetasIconos.zip que contiene todos los iconos creados con su caminos recursiva. Siempre se puede comentar o eliminar el rm
comando si quieres.
Esta respuesta sólo cubre la extracción de iconos personalizados y la creación de un .png archivo de la .icns archivo . Asignación de los iconos a carpetas en Linux está fuera del alcance de preguntas apropiadas para Pregunta diferente . Publicar una pregunta en Pregúntale a Ubuntu o Súper Usuario sería más apropiado para el Linux de las cosas.
Sin embargo, una vez que haya extraído el DocumentosCarpetasIconos.zip archivos en el Linux sistema, si necesita diferentes tamaños de la imagen distintos del extraído por sips
puede utilizar icns2png
para extraer todos los iconos del .icns archivos a los distintos tamaños dentro haciendo lo siguiente en un Terminal :
cd '/path/to/extracted/Documents'
find . -type f -name '*.icns' -execdir sh -c 'icns2png -x "$1"' sh {} \;
Tenga en cuenta que esto supone icns2png
se ha instalado.
Luego, en cada carpeta encontrará, por ejemplo,:
Foldername.icns
Foldername.png
Foldername_16x16x32.png
Foldername_32x32x32.png
Foldername_48x48x32.png
Foldername_128x128x32.png
Foldername_256x256x32.png
Foldername_512x512x32.png
El ejemplo shell script código se probó en Terminal en MacOS Catalina con Lengua y región ajustes en Preferencias del sistema ajustado a Inglés (EE.UU.) - Primaria y me ha funcionado sin problemas 1 .
- 1 Asume los ajustes necesarios y apropiados en <strong>Preferencias del sistema </strong>> <strong>Seguridad y privacidad </strong>> <strong>Privacidad </strong>se han fijado/abordado según las necesidades.
El <em>ejemplo </em><strong>shell script </strong><em>código </em>es sólo eso, un ejemplo, y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Es responsabilidad del usuario asegurarse de que el <em>script </em>si son aptos para su uso.
0 votos
¿Cuál es el sufijo (.???) de estos archivos?
1 votos
Si ha cambiado estos iconos utilizando la función de Finder Infórmate las imágenes estarán en la bifurcación de recursos (atributo extendido) de un archivo invisible en la carpeta root. Probablemente sería más fácil simplemente copiar las imágenes originales.
1 votos
@red_menace Por curiosidad, ¿no debería afectar al
kMDItemFSHasCustomIcon
para la carpeta? Me sale(null)
. ¿O no están relacionados? También obtener el mismo con un archivo al pegar una imagen en el icono Obtener información así.1 votos
@Mockman - Nunca he visto el
kMDItemFSHasCustomIcon
mostrar nada más que(null)
así que no sé si está obsoleto, se refiere a otra cosa o simplemente no funciona. Elcom.apple.ResourceFork
Los metadatos es donde se almacenan realmente los datos de la imagen, pero es un poco complicado acceder a ellos, especialmente en el caso de las carpetas.1 votos
@red_menace Gracias por la información. Me resulta difícil rastrear los detalles de gran parte de la miríada de metadatos en el sistema de archivos, así como información sobre los iconos, pero esto me da algo que buscar.