我想获得过去45天内整个目录结构中他们编辑的文件数量(是编辑该文件的最后一位用户)的每个用户名的计数。
这是我想要的输出:
+-------+-----+
| alex | 3 |
| liza | 345 |
| harry | 564 |
| sally | 23 |
+-------+-----+
到目前为止,我有这个powershell非工作脚本:
gci -Recurse| where {$_.LastWriteTime -gt (Get-Date).AddDays(-45)}| group owner|select count,owner
解决方案可以是powershell或bash!
感谢您的指导。
在我看来,这个过程应该是:
答案 0 :(得分:2)
powershell方式:
gci -Recurse| where {$_.LastWriteTime -gt (Get-Date).AddDays(-45)}|
select @{n="Owner";e={ get-acl $_ | select -expa owner }} | select -expa owner | group | select Count,name
编辑最后评论(powershell 3.0):
$dirs = dir -Directory
foreach ( $dir in $dirs)
{
$a = dir $dir -r -File | select @{n="Owner";e={ get-acl $_.fullname |
select -expa owner }} | select -expa owner | group | select Count,name
$a | add-member -Name Path -MemberType NoteProperty -Value $dir -PassThru
}
powershell 2.0:
$dirs = dir | ? { $_.psiscontainer }
foreach ( $dir in $dirs)
{
#$dir
$a = dir $dir -r |? { -not $_.psiscontainer } | select @{n="Owner";e={ get-acl $_.fullname | select -expa owner }} | select -expa owner | group | select Count,name
$a | add-member -Name Path -MemberType NoteProperty -Value $dir -PassThru
}
答案 1 :(得分:1)
文件系统不会跟踪编辑文件的最新用户的身份,但他们会跟踪文件的所有者。如果您想查看所有者最近修改过的文件的数量,可以试试这个:
find . -not -mtime +45 -printf %u\\n | sort | uniq -c
一块一块,这意味着:
查找45天或更久前未修改的所有文件:
find . -not -mtime +45
对于每个文件,打印文件的所有者:
-printf %u\\n
对结果进行分组并计算:
| sort | uniq -c
答案 2 :(得分:1)
使用PowerShell 3:
ls -r | ? LastAccessTime -gt (get-date).AddDays(-45) | get-acl | group Owner -no
细分:
答案 3 :(得分:0)
这是一个非常基本的脚本,可以帮助您实现目标:
$ cat findfilesbyuser.sh
#!/usr/bin/bash
searchdir="$1"
filelist=`find "$searchdir" -maxdepth 1 -type f -printf "%u:%p\n"`
userlist=`echo "$filelist" | cut -d: -f1 | sort -u`
echo "username:filecount"
while read uname
do
userfilecount=`grep -c "^"$uname":" <<< "$filelist"`
echo "$uname:$userfilecount"
done <<< "$userlist"
这里是我如何称呼它及其输出:
$ ./findfilesbyuser.sh /cygdrive/h
username:filecount
Administrators:1
user01:13
user02:24
你可能会遇到一些问题,cygwin会将一些用户名称显示为??????,但不幸的是,如果您使用bash解决方案扫描在Windows上创建的文件,这是不可避免的。
HTH!