패턴과 일치하는 폴더에 파일 이름 나열(파일 내용 제외)
하여 다을사다음포함폴모는나다열이 .$pattern
Get-ChildItem $targetDir -recurse | Select-String -pattern "$pattern" | group path | select name
둘 다 에 하만두파모보있것입다니처는럼두지일이록개목의▁the▁having▁files가 있는 것 같습니다.$pattern그 이름과 내용, 예를 들어 위의 내용을 실행할 때$pattern="SAMPLE"이해합니다.
C:\tmp\config.include
C:\tmp\README.md
C:\tmp\specs\SAMPLE.data.nuspec
C:\tmp\specs\SAMPLE.Connection.nuspec
이제:
C:\tmp\config.include
C:\tmp\README.md
실제로 SAMPLE 키워드/텍스트가 포함되어 있지만 저는 상관하지 않습니다. 패턴과 일치하는 내용으로 파일이 아닌 파일 이름을 나열하는 명령만 있으면 됩니다.제가 무엇을 빠뜨리고 있나요?
아래의 답변을 바탕으로 시도해 보았습니다.
$targetDir="C:\tmp\"
Get-ChildItem $targetDir -recurse | where {$_.name -like "SAMPLE"} | group path | select name
그리고:
$targetDir="C:\tmp\"
Get-ChildItem $targetDir -recurse | where {$_.name -like "SAMPLE"} | select name
결과를 반환하지 않습니다.
Select-String 당신이 시키는 대로 하고 있습니다.강조해주세요.
Select-String cmdlet은 입력 문자열 및 파일에서 텍스트 및 텍스트 패턴을 검색합니다.
따라서 파일 이름과 일치시키려면 다음을 사용하십시오.-FilterGet-ChildItem또는 사후 처리를 사용합니다.Where-Object
Get-ChildItem -Path $path -Recurse -Filter "*sample*"
그러면 이름에 샘플이 있는 모든 파일 및 폴더가 반환됩니다.파일이나 디렉터리만 원한다면 스위치를 사용할 수 있습니다.-File또는-Directory특정 개체 유형을 반환합니다.
의 패턴이 더하다면, 은 패단순단다더복사할면수있다습니도용야해다잡하턴어보이한▁need다▁is▁if니있▁to를 사용해야 할 수도 있습니다.Where-Object간지든의 대답처럼 말입니다.-match정규식에 액세스할 수 있습니다.
모든 경로가 고유한 단일 파일을 반환하므로 코드의 그룹화 논리는 중복되어야 합니다.그러므로 저는 그것을 여기에 포함시키지 않았습니다.만약 당신이 단지 경로를 원한다면, 당신은 파이프를 연결할 수 있습니다.Select-Object -Expand FullName아니면 그냥(Get-ChildItem -Path $path -Recurse -Filter "*sample*").Fullname
get-ChildItem $targetDir -recurse | where {$_.name -like $pattern} | select name
특히, 당신이 연결하고 있는 것은 물체이기 때문에 - 그것은 무엇입니까?Get-ChildItem출력 - 문자열이 아니라 이러한 개체로 표시되는 파일의 내용을 검색합니다.
각 파일 경로의 파일 이름 부분만 일치해야 하고 패턴이 와일드카드 식으로 표현될 수 있다고 가정할 때, 필요하지 않습니다.Select-String를 사용할 수도 있고 대신 사할수있다니습용▁use를 사용할 도 있습니다.Get-ChildItem와 함께-Filter 더 한 매트대답럼처, 느지만리더, 강한력약간의또는▁as▁more▁powerful.-Include.
주의사항:
Select-String -Pattern정규식을 사용할 수 있습니다(예:.*sample.*보다Get-Help about_Regular_Expressions),에 반에면.
Get-ChildItem -Filter/-Include와일드카드 표현식을 사용할 수 있습니다(예:*sample*보다Get-Help about_Wildcards) - 그들은 다른 것들입니다.
참고 사항:만약 당신의 의도가 오직 파일들과 일치하는 것이라면, 당신은 말할 수 있습니다.Get-ChildItem출력을 파일로 제한합니다(잠재적으로 디렉터리도 아닌).-File (으)로 디렉토리 출력을 할 수 .)-Directory).
Group-Object path(group path) 의도한 대로 작동하지 않을 것입니다, 왜냐하면.Path 일정개 속의성에서 하는 일치 Select-String전체 파일 이름을 포함하므로 각 파일을 고유한 그룹(기본적으로 no-op)에 넣습니다.
사용시만 할 때Get-ChildItem은 동한속이다같습니다과음름은성등▁be입니다..FullName하지만 부모 경로(포함된 디렉터리의 경로)를 기준으로 그룹화하는 것이 좋습니다..DirectoryName), 따라서 다음과 같이 추정합니다.
... | Group-Object DirectoryName | Select-Object Name
일치하는 파일 이름을 가진 하나 이상의 파일을 포함하는 각 디렉토리의 전체 경로를 출력합니다.
:NameSelect-Object Name을 ..Name반환된 그룹 개체의 속성Group-Object▁value의 값이 ..DirectoryName입력 개체의 속성입니다.).
@mklement0의 우수한 답변을 보완하기 위해 Powershell에 다음과 같이 파이프를 추가하여 전체 경로를 인쇄하도록 요청할 수 있습니다.
Get-ChildItem -Recurse -ErrorAction SilentlyContinue -Force -Filter "*sample*" | %{$_.FullName}
참고: 보안에 따라 오류가 발생할 수 있는 폴더를 검색할 때는 SilentContinue 옵션을 사용합니다.
나는 @Ichydon의 답을 검토했습니다.
하지만 '좋아요' $196의 사용을 따를 수 없었습니다.
파일 이름에 32자(문자와 숫자)의 파일을 나열하려고 했습니다.
PSC:>Get-ChildItem C:\Users\ -Recurse | where {$_.name -match "[a-zA-Z0-9]{32}"} | select name
또는
PSC:>Get-ChildItem C:\Users\010M\Documents\WindowsPowerShell -Recurse | Where-Object {$_.name -match "[A-Z0-9]{32}"} | select name
따라서 이 경우에는 어디에 개체를 사용하든 어디에 개체를 사용하든 상관 없습니다.
select-string을 직접 사용하여 특정 문자열과 일치하는 파일을 검색할 수 있습니다. 예, 이렇게 하면 파일 이름:count:content...가 반환됩니다.등, 그러나 내부적으로는 선택하거나 생략할 수 있는 이름이 있습니다. 이 파이프를 출력에서 "파일 이름"을 선택하는 "select-object"로 연결하려면 "파일 이름"이 필요합니다.
모두 선택하려면 *."Subject:" 패턴이 있는 MSG 파일.웹 서비스가 다시 시작되었습니다."에서 다음을 수행할 수 있습니다.
Select-String -Path .*를 선택합니다.MSG - 패턴 '제목:웹 서비스 다시 시작됨' -List | select-object Filename
또한 이러한 파일을 즉시 제거하려면 RM 명령을 사용하여 ForEach 문에 다음과 같이 연결할 수 있습니다.
Select-String -Path .*를 선택합니다.MSG - 패턴 '제목:웹 서비스 다시 시작됨' - 목록 | select-object Filename | 각 {rm$.파일 이름 }
언급URL : https://stackoverflow.com/questions/44825746/list-file-names-in-a-folder-matching-a-pattern-excluding-file-content
'programing' 카테고리의 다른 글
| DIV에서 긴 단어로 줄 바꿈을 강제하는 방법은 무엇입니까? (0) | 2023.07.31 |
|---|---|
| Powershell을 통해 Windows 탐색기 폴더 옵션 구성 (0) | 2023.07.31 |
| 서버 태그의 형식이 올바르지 않습니다. 오류 (0) | 2023.07.31 |
| ExpressJS에서 X-Powered-By를 제거하는 방법 (0) | 2023.07.31 |
| Spring MVC는 여러 사용자를 어떻게 처리합니까? (0) | 2023.07.31 |