phuxtil / find
为 'find' Unix 命令输出提供简易接口
3.0.0
2021-05-18 16:24 UTC
Requires
- php: ^8
- phuxtil/chmod: ^3
- phuxtil/splfileinfo: ^3
Requires (Dev)
- phpunit/phpunit: ^9
- symfony/var-dumper: ^4|^5
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
。