¿Cómo realizar una búsqueda recursiva de archivos ocultos en Windows?

¿Cómo realizar una búsqueda recursiva de archivos ocultos en Windows?

Noté que ni cmdni powershellpuedo realizar una búsqueda recursiva de archivos en archivos con el atributo oculto.

Entonces, ¿hay alguna manera de evitar esto? Me refiero excepto tener que eliminar el atributo oculto del archivo o archivos en cuestión, para lo cual necesitaría saber su ubicación de antemano, lo que por supuesto haría que todo el ejercicio careciera de sentido.

¿Por qué no funciona con archivos que tienen el atributo oculto? ¿Es esto algún tipo de característica de seguridad?

Ejemplo (cmd)


C:\>dir /b
Intel
PerfLogs
plant
Program Files
Program Files (x86)
Users
Windows

C:\>cd plant

C:\plant>dir /b
banana.txt

C:\plant>attrib banana.txt
A            C:\plant\banana.txt

C:\plant>attrib -a +h banana.txt

C:\plant>dir /b

C:\plant>dir /b banana.txt
File Not Found

C:\plant>cd /

C:\>dir /b /s banana.txt
File Not Found

C:\>

Respuesta1

Para enumerar archivos ocultos usandoPotencia Shelltendrás que usar el -Forceparámetro. Entonces, al usarlo Get-ChildItem -Force -Recurseobtendrás una lista de todos los archivos, incluidos los archivos ocultos.

Get-Help Get-ChildItem -Examples:

El parámetro Forzar agrega archivos ocultos a la pantalla.

Sí, no es intuitivo y la descripción del parámetro en sí no te lo dice.

Para la línea de comando en sí sería dir /Ao dir /AHsolo enumerar archivos ocultos, pero no estoy seguro de cómo buscaría ese resultado.

Respuesta2

En el símbolo del sistema de Windows, utilice los modificadores /a y /s para todos los archivos y de forma recursiva:

/A          Displays files with specified attributes.
/S          Displays files in specified directory and all subdirectories.

Ejemplo

dir/a/s

En Powershell uso el mismo método solo que con -force en lugar de /a para mostrar todos los archivos:

dir -force -s

o

dir -force -r

¡También hay ls en Powershell para escribir 1 carácter menos!

ls -force -s

o

ls -force -r

Respuesta3

Finalmente la respuesta fue:

  • CMD:dir /a:H /s

  • POWERSHELL: ls -ah -recurse (opción -fuerza)

información relacionada