You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式解析Linux stat命令输出(PHP preg_match实现)

PHP提取Linux stat命令输出字段实现方案

直接使用以下代码即可通过preg_match一次性提取所有目标字段,正则已适配主流Linux发行版默认stat输出格式:

<?php
// 实际使用时替换为你执行stat命令获取的真实输出内容
$statOutput = <<<STAT
  File: '/home/user/file.php'
  Size: 23283       Blocks: 48         IO Block: 4096   regular file
Device: 801h/2049d  Inode: 967703      Links: 1
Access: (0600/-rw-------)  Uid: ( 1002/user)   Gid: ( 1003/user)
Access: 2022-06-06 07:12:31.298324852 -0400
Modify: 2022-06-02 07:54:24.493383727 -0400
Change: 2022-06-02 07:54:43.548316545 -0400
 Birth: 2022-06-02 07:12:31.298324852 -0400
STAT;

// 匹配所有目标字段的正则规则
$pattern = '/File:\s*\'([^\']+)\'\s*Size:\s*(\d+)\s*.*?IO Block:\s*\d+\s*([a-zA-Z ]+)\s*Device:.*?Access:\s*\([^)]+\/([^)]+)\)\s*Uid:\s*\(\s*\d+\/([^)]+)\)\s*Gid:\s*\(\s*\d+\/([^)]+)\)\s*Access:.*?Modify:\s*([0-9:\-\. ]+)\s*Change:.*?Birth:\s*([0-9:\-\. ]+)/s';

preg_match($pattern, $statOutput, $matches);

// 结果映射,可直接传入后续业务逻辑使用
$fileInfo = [
    'filename' => trim($matches[1]),       // 文件完整路径/文件名
    'size' => (int)$matches[2],            // 文件大小,单位:字节
    'file_type' => trim($matches[3]),      // 文件类型
    'permission' => trim($matches[4]),     // 访问权限字符串
    'owner_user' => trim($matches[5]),     // 所属用户名
    'owner_group' => trim($matches[6]),    // 所属用户组
    'modify_time' => trim($matches[7]),    // 最后修改时间
    'create_time' => trim($matches[8])     // 文件创建时间(Birth字段)
];

// 验证输出
print_r($fileInfo);
?>

使用说明

  • 正则添加了s修饰符,支持直接匹配整段带换行的stat输出,不需要逐行拆分处理
  • 提取的时间字段保留stat原始输出格式,需要转时间戳可直接调用strtotime()函数处理
  • 文件大小为整数类型的字节值,可直接用于容量计算
  • 如果需要提取数字格式的权限(如0600),只需要调整正则中权限捕获组的匹配规则即可
  • 若服务器locale配置、stat版本不同导致输出格式有小幅差异,微调正则对应位置的匹配规则即可适配

运行结果示例

Array
(
    [filename] => /home/user/file.php
    [size] => 23283
    [file_type] => regular file
    [permission] => -rw-------
    [owner_user] => user
    [owner_group] => user
    [modify_time] => 2022-06-02 07:54:24.493383727 -0400
    [create_time] => 2022-06-02 07:12:31.298324852 -0400
)

内容的提问来源于stack exchange,提问作者tenev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:33:21