phuxtil/find

为 'find' Unix 命令输出提供简易接口

3.0.0 2021-05-18 16:24 UTC

This package is auto-updated.

Last update: 2024-09-18 23:34:00 UTC


README

find Unix 命令输出提供简易接口

在类 Unix 和一些其他操作系统中,find 是一种命令行工具,用于搜索文件系统的一个或多个目录树,根据用户指定的标准查找文件,并对每个匹配的文件应用用户指定的操作。

安装

composer require phuxtil/find

注意:使用 v1.x 以与 PHP v7.0.x 兼容 注意:使用 v2.x 以与 PHP v7.2+ 兼容

用法

find 样例输出
1560682188|1560682181|1560682181|0755|root|root|0|0|d|10245134|0|160|5|remote_fs/|/tmp/remote_fs/
1560682162|1560682181|1560682181|0644|root|root|0|0|f|10269956|8|1210|1|test.txt|/tmp/remote_fs/test.txt
1560682162|1560682181|1560682181|0644|root|root|0|0|f|10269956|8|1210|1|test_link.txt|/tmp/remote_fs/test_link.txt
配置

使用 Phuxtil\Find\FindConfigurator 进行配置选项。

$configurator = (new FindConfigurator())
     ->setFormat('%As|%Cs|%Ts|%#m|%u|%g|%U|%G|%y|%i|%b|%s|%n|%f|%p')
     ->setFormatDelimiter('|')
     ->setLineDelimiter("\n")
     ->setFindOutput(...);
外观
$results = (new FindFacade())->process($configurator);
[
    0 => Phuxtil\SplFileInfo\VirtualSplFileInfo {
        path: "/tmp"
        filename: "remote_fs"
        basename: "remote_fs"
        pathname: "/tmp/remote_fs"
        extension: ""
        realPath: "/tmp/remote_fs"
        aTime: 2019-06-16 12:49:48
        mTime: 2019-06-16 12:49:41
        cTime: 2019-06-16 12:49:41
        inode: "10245134"
        size: "160"
        perms: 0755
        owner: "0"
        group: "0"
        type: "dir"
        writable: true
        readable: true
        executable: true
        file: false
        dir: true
        link: false
        linkTarget: -1
      }
      1 => Phuxtil\SplFileInfo\VirtualSplFileInfo {
        path: "/tmp/remote_fs"
        filename: "test.txt"
        basename: "test.txt"
        pathname: "/tmp/remote_fs/test.txt"
        extension: "txt"
        realPath: "/tmp/remote_fs/test.txt"
        aTime: 2019-06-16 12:49:22
        mTime: 2019-06-16 12:49:41
        cTime: 2019-06-16 12:49:41
        inode: "10269956"
        size: "1210"
        perms: 0644
        owner: "0"
        group: "0"
        type: "file"
        writable: true
        readable: true
        executable: false
        file: true
        dir: false
        link: false
        linkTarget: -1
      }
      2 => Phuxtil\SplFileInfo\VirtualSplFileInfo {
        path: "/tmp/remote_fs"
        filename: "test_link.txt"
        basename: "test_link.txt"
        pathname: "/tmp/remote_fs/test_link.txt"
        extension: "txt"
        realPath: "/tmp/remote_fs/test_link.txt"
        aTime: 2019-06-16 12:49:22
        mTime: 2019-06-16 12:49:41
        cTime: 2019-06-16 12:49:41
        inode: "10269956"
        size: "1210"
        perms: 0644
        owner: "0"
        group: "0"
        type: "file"
        writable: true
        readable: true
        executable: false
        file: true
        dir: false
        link: false
        linkTarget: -1
      }
]

结果是包含 VirtualSplFileInfo 对象的数组,这些对象与 \SplFileInfo 兼容。

echo $results[0]->getPathname();    # /tmp/remote_fs
echo $results[1]->isReadable();     # true
echo $results[2]->getSize();        # 1210

单元测试

有关详细信息,请参阅 tests