Sé cómo ver los archivos ocultos en el Finder. En cambio, lo que me gustaría hacer es listar los archivos en el shell/Terminal por el mismo criterio que el Finder utiliza para los archivos que están ocultos. (Mi objetivo es recolectar métricas usando un cronjob/lanzamiento de script que sean consistentes con lo que aparece en la UI).
Esto está resultando más difícil de lo que parece. Aquí hay un caso de ejemplo de las formas que conozco para ocultar un archivo del Finder (Big Sur 11.6, Apple Silicon, APFS):
mkdir test
cd test
touch regular hidden invisible .dotfile
SetFile -a V invisible
chflags nohidden invisible
chflags hidden hidden
Esto requiere que SetFile
que está disponible con las Herramientas para Desarrolladores.
El resultado esperado del comando o script es un archivo, regular
. Los otros tres archivos no son visibles en el Finder en las circunstancias habituales. Me gustaría que la solución sólo requiriera herramientas nativas (no Developer Tools o gnu coreutils/homebrew y similares).
Hasta ahora, mi enfoque sería hacer un bucle a través de todos los archivos emitidos por ls -lO | awk 'NR!=1 && $5!~/hidden/ { print $0 }'
(esto filtra los archivos de puntos y el hidden
), y utilizar GetFileInfo
(otra herramienta para desarrolladores instalada junto a SetFile
) para filtrar el atributo invisible. Sin embargo, esto requiere que se instalen las Herramientas para Desarrolladores, de las que preferiría evitar la dependencia, y también parece incómodo y excesivamente complicado--y probablemente también ineficiente si hay miles de archivos en un directorio.
Sospecho que las otras opciones serían analizar manualmente la salida de xattr -px com.apple.FinderInfo invisible
(más complicada pero que evita el GetFileInfo
dependencia) o utilizar osascript
para utilizar de alguna manera la lógica existente del Finder en lugar de intentar reimplementarla utilizando herramientas BSD.
Editar: Dado que aparentemente los usuarios setfile
comandos establecen la bandera oculta, añadí chflags nohidden invisible
al caso de prueba, ya que es totalmente probable que el sistema de archivos contenga archivos (creados por otros medios) que sólo tienen el atributo extendido FinderInfo flag y no tienen el BSD file flag.