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

Laravel如何在指定目录搜索以dm开头或.tmp结尾的文件

Laravel 按文件名规则筛选指定目录文件

你可以通过Laravel Filesystem门面的filter()方法,结合文件名判断逻辑来实现需求,以下是具体实现方式:

基础实现(仅当前目录)

如果只需要筛选指定目录下的直接文件(不包含子目录文件),可以用File::files()配合过滤:

use Illuminate\Support\Facades\File;

$targetDir = storage_path("app/public/session");

// 筛选以"dm"开头或".tmp"结尾的文件
$filteredFiles = File::files($targetDir)->filter(function ($file) {
    $filename = $file->getBasename();
    // PHP 8.0+ 可用原生函数判断
    return str_starts_with($filename, 'dm') || str_ends_with($filename, '.tmp');
});

// 遍历结果示例
foreach ($filteredFiles as $file) {
    echo $file->getPathname(); // 输出文件完整路径
}

兼容低版本PHP(<8.0)

如果你的PHP版本低于8.0,无法使用str_starts_with和str_ends_with,可以用substr替代:

$filteredFiles = File::files($targetDir)->filter(function ($file) {
    $filename = $file->getBasename();
    return substr($filename, 0, 2) === 'dm' || substr($filename, -4) === '.tmp';
});

包含子目录的递归筛选

如果需要同时筛选子目录下的符合规则文件,将File::files()替换为File::allFiles()即可:

$filteredFiles = File::allFiles($targetDir)->filter(function ($file) {
    $filename = $file->getBasename();
    return str_starts_with($filename, 'dm') || str_ends_with($filename, '.tmp');
});

内容的提问来源于stack exchange,提问作者Fares Mounir Merzouk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:50:22