2013-08-14 4 views
0

Будучи абсолютно новым для PowerShell, мне было интересно, какой прямой скрипт будет искать все различные имена файлов, в которых есть строка «E xx».Поиск уникальных/отдельных файлов в windows powershell.

В моем случае в папке этого файла есть 2000 файлов PDF с различными именами, например E 52 (40 файлов, содержащих эту строку), E 44 (12 файлов, содержащих эту строку), E 56 (один файл, содержащий эту строку) и т. д. Количество разных строк является случайным, но каждый один из 2000+ файлов содержит букву E и имеет пробел после нее. Я надеюсь использовать это как индикатор поиска. Количество файлов для каждой строки также является случайным.

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

После ряда исследований я узнал, что вы должны использовать «уникальный» cmd после строк текста. Любая помощь будет оценена по достоинству.

ответ

-1
cd c:\Folder 
ls | ? { -not $_.PSIsContainer -and $_.BaseName -cmatch 'E\s\d{2}' } | % { 
    $folder = $matches[0] 
    new-item -ItemType Directory -Path . -Name $folder -ErrorAction SilentlyContinue 
    move-item $_.Name $folder 
} 

Idk, если это помогает, но я предлагаю больше исследований.

Если вы говорите только делает

ls | ? {$_.Name -cmatch "E\s\d{2}"} | select unique

Это не может быть очень полезным

+0

Фильтр может быть упрощено до '? {-not $ _. PSIsContainer - и $ _. BaseName -cmatch 'E \ d {2}'} '. –

+0

Спасибо, обновился, чтобы сделать его чище, не знал о cmatch, мне нравится. – Cole9350

+0

Пожалуйста, не используйте '\ s', когда это требование соответствует пробелу. '\ s' соответствует не просто пробелам. –

Смежные вопросы