簡體   English   中英

刪除包含字符串的 ftp 名稱中的文件

[英]Delete files in ftp name containing a string

我想在 FTP 文件夾(和子文件夾)中刪除名稱中包含“2019”字符串的所有文件

例如 201902_QSA4_CA.pdf => 該文件將被刪除

這是我的代碼,但沒有運行:

$web = 'mipage.com';
$user = 'xxxx';
$pass = 'xxxx';
//connect
$conn_id = ftp_connect($web);
$login_result = ftp_login($conn_id,$user,$pass);

$it = new RecursiveDirectoryIterator("pdfs/archivo/");
$display = Array ('2019');
foreach(new RecursiveIteratorIterator($it) as $file)
{
    if (in_array(reset(explode('.', $file)), $display))
        unlink($file);
}
ftp_close($conn_id);

有人可以幫助我嗎?

謝謝

問候

ftp_nlist將允許您使用通配符來獲取文件列表。

$web = 'mipage.com';
$user = 'xxxx';
$pass = 'xxxx';
//connect
$conn_id = ftp_connect($web);
$login_result = ftp_login($conn_id,$user,$pass);
ftp_pasv($conn_id, true);

$files = ftp_nlist($conn_id, "/pdfs/archivo/2019*");

foreach ($files as $file_name)
{
    ftp_delete($conn_id, $file_name);
}

如果需要遞歸查找子目錄,可以這樣操作。

$web = 'mipage.com';
$user = 'xxxx';
$pass = 'xxxx';
//connect
$conn_id = ftp_connect($web);
$login_result = ftp_login($conn_id,$user,$pass);
ftp_pasv($conn_id, true);

$files = [];
$ftpRecursiveSearcher = function ($path, $pattern) use (&$ftpRecursiveSearcher, &$files, &$conn_id)
        {
            $list = ftp_nlist($conn_id, $path);
            foreach ($list as $name)
            {
                if (ftp_size($conn_id, $name) === -1)
                {
                    $targets = ftp_nlist($conn_id, "{$name}/{$pattern}");
                    $files = array_merge($files, $targets);
                }
            }
        };

$ftpRecursiveSearcher('pdfs/archivo', '2019*');

array_walk($files, function ($file) use (&$conn_id) {
            ftp_delete($conn_id, $file); 
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM