[英]Windows10/powershell: how to count files and then sort them by subfolders?
我在Linux中有一个脚本,可以搜索/计算子文件夹中的所有文件,并为每个文件计数。
运行时的示例输出: my-count-script.sh /usr
5322 X11R6
316 bin
89 lib
2165 libdata
50 libexec
19220 local
10 mdec
206 sbin
8970 share
这给了我/usr
内所有文件夹的计数。 因此,实际的共享路径为/usr/share
。 bin的路径是/usr/bin
。
我想/usr
是父级,子级包括share
, bin
等。我希望显示在“ children”级别停止。
有什么想法可以在电源外壳中完成吗?
像这样的快速班轮:
(ls c:\YourPath\*\* -File).Directory | Group-Object name
您想要类似的东西:
Get-Childitem $home -recurse | Group-Object Directory -noelement
我在这里使用$ home作为目录规范,但是您可能希望使用与您的情况更相关的目录。
这将在其第一级上获取每个子目录的子项计数。
获取所有子目录,然后为每个目录递归获取每个子文件夹的所有文件。
Get-childitem C:\Test -Recurse -Depth 0 -Directory | %{@{$_.Name = (Get-ChildItem $_.FullName -File -Recurse).count}} | format-table
如果您不希望递归计数,请运行此命令,这只会使您获得每个子目录中的文件计数
Get-childitem C:\Test -Recurse -Depth 0 -Directory | %{@{$_.Name = (Get-ChildItem $_.FullName -File).count}} | format-table
这是一个还可以实现您想要的功能
function Get-SubDirectoryCount(){
Param(
[Parameter(Mandatory=$True)]
[string]$Directory,
[switch]$Recurse,
[Parameter(ParameterSetName='FilesOnly')]
[switch]$FilesOnly,
[Parameter(ParameterSetName='DirectoriesOnly')]
[switch]$DirectoriesOnly,
[Parameter(ParameterSetName='FilesDirectoriesOnly')]
[switch]$FilesAndDirectories
)
Invoke-expression "Get-childitem $Directory -Recurse -Depth 0 -Directory | %{@{`$_.Name = (Get-ChildItem `$_.FullName $(if($DirectoriesOnly){write-output "-Directory"})$(if($FilesOnly){write-output "-File"}) $(if($Recurse){write-output "-Recurse"})).count}} | format-table"
}
#Get Files and Directories Recursively
Get-SubDirectoryCount -Directory C:\Test -FilesAndDirectories -Recurse
#Get Files Recursively
Get-SubDirectoryCount -Directory C:\Test -FilesOnly -Recurse
#Get Directories Recursively
Get-SubDirectoryCount -Directory C:\Test -DirectoriesOnly -Recurse
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.