Как выполнить рекурсивный поиск скрытых файлов в Windows?

Как выполнить рекурсивный поиск скрытых файлов в Windows?

Я заметил, что ни , cmdни не powershellмогут выполнять рекурсивный поиск файлов с атрибутом «скрытый».

Так есть ли способ обойти это? Я имею в виду, кроме необходимости удалить атрибут «скрытый» из файла или файлов, о которых идет речь, для чего мне нужно было бы заранее знать их местоположение, что, конечно, сделало бы все упражнение бессмысленным.

Почему не работает с файлами, имеющими атрибут "скрытый"? Это какая-то функция безопасности?

Пример (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:\>

решение1

Чтобы вывести список скрытых файлов, используйтеPowerShellвам придется использовать -Forceпараметр. Таким образом, используя Get-ChildItem -Force -Recurseвы получите список всех файлов, включая скрытые файлы.

Get-Help Get-ChildItem -Examples:

Параметр Force добавляет скрытые файлы на дисплей.

Да, это не интуитивно понятно, и описание самого параметра ничего не говорит.

Для самой командной строки это было бы dir /Aили dir /AHтолько для перечисления скрытых файлов, но я не уверен, как вы будете искать этот вывод.

решение2

В командной строке Windows используйте ключи /a и /s для всех файлов и рекурсивно:

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

Пример

dir/a/s

В Powershell я использую тот же метод, только с -force вместо /a, чтобы показать все файлы:

dir -force -s

или

dir -force -r

Также в Powershell есть команда ls, позволяющая набрать на 1 символ меньше!

ls -force -s

или

ls -force -r

решение3

Наконец ответ был:

  • ЦМД:dir /a:H /s

  • POWERSHELL: ls -ah -recurse (опция -force)

Связанный контент