Как указать расположение папки И тип файла в Powershell - PullRequest
0 голосов
/ 28 января 2020

Я хотел бы использовать Powershell для поиска папок, содержащих указанное c слово, а затем заглянуть внутрь них для указанного c типа файла. У меня возникают проблемы с выяснением, как это сделать с помощью Powershell.

find . \
-type d -iname '*_OUTPUT' -maxdepth 2 \
-exec find {} -type f -iname '*.psd' -not -path "*.\_*" \; >> /Volumes/Path-to-output-folder/Output.csv

Это сценарий Bash, который я написал для запуска в Терминале. Иногда это работает, но также регулярно прерывает соединение с сервером SMB, потому что я запускаю его на Ma c, и ему не нравится сервер SMB. Поэтому я хочу попробовать сделать то же самое на компьютере Windows, потому что он надежно подключен к серверу.

То, что я делаю здесь, - это проникновение в две папки из начального каталога -maxdepth 2 и ищет там любые папки, заканчивающиеся на _OUTPUT -type d -iname '*_OUTPUT'. Затем, просматривая внутри этих папок любые файлы с расширением .psd -exec find {} -type f -iname '*.psd', игнорируем скрытые файлы, которые могут попасть в поиск -not -path "*.\_*". Все найденные файлы выводятся в виде полного пути к листу CSV.

Я могу искать папки в Powershell, используя -directory, и искать типы файлов, используя Get-ChildItem, но у меня возникают проблемы с выяснением. как объединить их, как я делал выше, используя Bash. Есть ли мастер Powershell, который мог бы помочь?

1 Ответ

1 голос
/ 28 января 2020

Давайте начнем с разбивки:

# Finding folders with names ending in _OUPUT
Get-ChildItem -Directory -Depth 2 -Filter *_OUTPUT

# Finding files in a folder with the .psd extension
Get-ChildItem -Path .\folder\ -File -Filter *.psd

Мы можем объединить два с конвейером следующим образом:

Get-ChildItem -Directory -Depth 2 -Filter *_OUTPUT |Get-ChildItem -File -Filter *.psd

Наконец, используйте Where-Object для исключения файлов, начинающихся с ._:

Get-ChildItem -Directory -Depth 2 -Filter *_OUTPUT |Get-ChildItem -File -Filter *.psd |Where Name -notlike ._*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...