Get-ChildItem 결과에서 항목 목록을 제외하는 방법은 무엇입니까?
경로의 파일 목록(실제 파일 수)을 재귀적으로 가져오되 특정 유형을 제외하고:
Get-ChildItem -Path $path -Recurse | ? { $_.Name -notlike "*.cs" -and $_.Name -notlike "*.tt" }
하지만 저는 (몇 가지 예를 들어) 제외 대상에 대한 긴 목록을 가지고 있습니다.
@("*.cs", "*.tt", "*.xaml", "*.csproj", "*.sln", "*.xml", "*.cmd", "*.txt")
이 양식을 사용하여 목록을 가져오는 방법:
Get-ChildItem -Path $path -Recurse | ? { <# what to put here ?#> }
?
이 작업도 가능합니다.
get-childitem $path -recurse -exclude *.cs,*.tt,*.xaml,*.csproj,
*.sln,*.xml,*.cmd,*.txt
-include only works -recurse 또는 와일드카드와 함께 경로에서 작동함. (실제로 6.1 pre 2에서 항상 작동함)
또한 -exclude 및 -filter를 모두 사용하면 경로에 -recurse 또는 와일드카드가 없으면 아무것도 나열되지 않습니다.
-include and -literal path는 PS 5에서도 문제가 있어 보입니다.
루트에 경로가 ""인 -include 및 -exclude가 있는 버그도 있으며 아무것도 아무것도 표시되지 않습니다.유닉스에서는 오류가 발생합니다.
(전체 경로가 아닌) "foo3"와 같은 디렉토리를 제외하는 것은 어렵습니다.-Recurse 또는 -filter에서는 작동하지 않는 것 같습니다.두 번째 출산 품목으로 배관 작업을 하실 수 있습니다.
get-childitem -exclude foo3 | get-childitem -recurse -filter file*
제외 대상을 제공할 수 있습니다.Get-ChildItem
와 함께-exclude
매개 변수:
$excluded = @("*.cs", "*.tt", "*.xaml", "*.csproj", "*.sln", "*.xml", "*.cmd", "*.txt")
get-childitem -path $path -recurse -exclude $excluded
Where-Object cmdlet을 사용하여 수행하는 방법은 다음과 같습니다.
$exclude = @(".cs", ".tt", ".xaml", ".csproj", ".sln", ".xml", ".cmd", ".txt")
Get-ChildItem -Path $path -Recurse | Where-Object { $exclude -notcontains $_.Extension }
결과에서도 디렉토리를 반환하지 않으려면 다음을 사용합니다.
$exclude = @(".cs", ".tt", ".xaml", ".csproj", ".sln", ".xml", ".cmd", ".txt")
Get-ChildItem -Path $path -Recurse | Where-Object { (-not $_.PSIsContainer) -and ($exclude -notcontains $_.Extension) }
Set-Location C:\
$ExcludedcDirectory = "Windows|Program|Visual|Trend|NVidia|inet"
$SearchThis = Get-ChildItem -Directory | where Name -NotMatch $ExcludedcDirectory
$OutlookFiles = foreach ($myDir in $SearchThis) {
$Fn = Split-Path $myDir.fullname
$mypath = "Get-ChildItem -Path $Fn\*.pst, *.ost -Recurse -ErrorAction SilentlyContinue"
Invoke-Expression "$mypath"
}
$OutlookFiles.FullName
Where-Object를 사용하면 다음과 같이 작업할 수 있습니다.
Get-ChildItem -Path $path -Recurse | Where-Object { $_.Extension -notin @("*.cs", "*.tt", "*.xaml", "*.csproj", "*.sln", "*.xml", "*.cmd", "*.txt")}
비교하다dll
두 개의 디렉토리 파일이 있고,$src_dir
그리고.$dest_dir
, 에 존재하지 않는 파일을 나열합니다.$src
Get-ChildItem (Join-Path $src_dir "*.dll") -Exclude (Get-ChildItem (Join-Path $dest_dir "*.dll") -File | %{$_.Name})
언급URL : https://stackoverflow.com/questions/19207991/how-to-exclude-list-of-items-from-get-childitem-result-in-powershell
'programing' 카테고리의 다른 글
실수를 했을 때 >> 프롬프트의 파워셸에서 어떻게 벗어날 수 있습니까? (0) | 2023.10.31 |
---|---|
C 또는 C++에서 A 플러그인 시스템 구현 (0) | 2023.10.31 |
*(긴*)0=0; 이 문장의 기능은 무엇입니까? (0) | 2023.10.31 |
신뢰할 수 없는(자체 서명된) HTTPS에 대한 AJAX 호출이 자동으로 실패함 (0) | 2023.10.31 |
MySQL: OR 없이 colIN(null, "")이 가능한 테이블에서 *를 선택합니다. (0) | 2023.10.31 |