我在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
等。我希望显示停在“子”级别。
有什么想法可以在power shell中完成吗?
答案 0 :(得分:2)
像这样的快速衬里:
(ls c:\YourPath\*\* -File).Directory | Group-Object name
答案 1 :(得分:1)
你想要这样的东西:
Get-Childitem $home -recurse | Group-Object Directory -noelement
我在这里使用$ home作为目录规范,但你可能想要使用与你的情况更相关的那个。
答案 2 :(得分:1)
这将在第一级获取每个子目录的子项目计数。
获取所有子目录,然后为每个目录获取每个子文件夹递归获取所有文件的目录。
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