如何获取近30天未使用/访问的Perforce客户端列表?
获取近30天未被访问的Perforce客户端列表的方法
方法1:直接用p4 clients内置筛选(最快捷)
Perforce的p4 clients命令支持通过参数直接过滤日期,一步到位:
p4 clients -T "client, owner, accessed, root" -F "accessed <= %30d%"
- 参数说明:
-T:指定输出字段,这里包含客户端名、所有者、最后访问时间、根目录,可按需增减-F:过滤规则,%30d%是Perforce内置变量,代表当前时间往前推30天,该规则会筛选出所有最后访问时间早于30天前的客户端
如果只需要客户端名称,简化命令:
p4 clients -T client -F "accessed <= %30d%"
方法2:用p4 clientstat批量验证(适合复杂场景)
如果需要更精细的判断逻辑,或结合其他客户端属性,可以先拉取所有客户端列表,再逐个检查访问时间。以下是Shell脚本示例:
# 计算30天前的Unix时间戳 THRESHOLD=$(date -d "-30 days" +%s) # 遍历所有客户端 p4 clients -T client | while read CLIENT_NAME; do # 提取客户端最后访问时间 ACCESSED_DATE=$(p4 clientstat -c "$CLIENT_NAME" | grep "^Accessed:" | awk '{print $2, $3}') # 转换为时间戳(macOS需替换为`date -j -f "%Y/%m/%d %H:%M:%S" "$ACCESSED_DATE" +%s`) ACCESSED_TIMESTAMP=$(date -d "$ACCESSED_DATE" +%s 2>/dev/null) # 比较时间戳,输出符合条件的客户端 if [ "$ACCESSED_TIMESTAMP" -lt "$THRESHOLD" ]; then echo "$CLIENT_NAME - 最后访问时间: $ACCESSED_DATE" fi done
- Windows环境可改用PowerShell实现相同逻辑,核心步骤一致:拉取列表→提取时间→日期对比。
注意事项
- 权限限制:执行命令的用户需要有
list权限查看所有客户端,否则只能看到自己有权限访问的范围 - 空值处理:从未被访问过的客户端,
accessed字段为空,这类客户端会被上述命令自动筛选出来 - 日期兼容性:不同系统的日期转换工具语法有差异,需根据运行环境调整时间戳转换逻辑
内容的提问来源于stack exchange,提问作者AskQuestionsP
相关产品推荐
相关产品推荐

