获取特定用户超280天未访问的Perforce客户端列表问题
解决Perforce特定用户失效客户端筛选问题
问题根源
你的命令存在两个核心问题:
-u perforce.user是设置执行Perforce命令的身份用户,而非筛选客户端的归属用户,因此会返回所有可见的客户端。- 原命令其实已经输出了用户名(
%User%对应输出第一列),但未做用户过滤,导致结果混杂其他用户数据,让你误以为没显示用户名。
修正方案
方法一:直接在Perforce层面筛选(推荐,更高效)
通过p4 clients -u <目标用户名>直接限定只返回该用户的客户端,再进行时间过滤:
p4 -ztag -F "%User% %client% %Access%" clients -u target_user | awk '$3 < "'$(date -d "280 days ago" +%s)'" {print $1","$2","strftime("%Y/%m/%d %H:%M:%S",$3)}'
将target_user替换为你要筛选的实际用户名即可。
方法二:在awk中追加用户过滤
如果需要保留-u perforce.user的身份设置,可在awk中增加用户名匹配条件:
p4 -ztag -F "%User% %client% %Access%" -u perforce.user clients | awk '$1 == "target_user" && $3 < "'$(date -d "280 days ago" +%s)'" {print $1","$2","strftime("%Y/%m/%d %H:%M:%S",$3)}'
命令说明
p4 clients -u target_user:仅列出归属target_user的客户端,减少后续处理的数据量。-ztag -F "%User% %client% %Access%":指定输出客户端的归属用户、客户端名、最后访问时间戳三个字段。- awk部分:过滤最后访问时间早于280天前的客户端,并将结果格式化为逗号分隔的
用户名,客户端名,格式化时间形式。
内容的提问来源于stack exchange,提问作者StupidScienceGuy
相关产品推荐
相关产品推荐

