PHP 脚本将大文件夹中的文件排序到基于日期的子文件夹中

标签 php linux file

我有来自 PBX 系统的大量通话录音,我需要将它们分类到更易于管理的文件夹中。

作为一个 Linux 菜鸟,我如何搜索指定的文件夹并根据文件的日期将其移动到文件夹层次结构中。

示例我的文件夹结构为 2013/04/23。

然后我的文件的日期为

20130403-blah283.mp3 20130403-blah284.mp3 20130403-blah285.mp3 20130403-blah286.mp3 20130403-blah287.mp3

等等。任何帮助将不胜感激。

最佳答案

这可能会给您一个起点:

  1. 获取文件
  2. 遍历文件
  3. 创建新目录/文件名
  4. 如果存在则创建目录
  5. 复制文件
  6. 删除旧文件

型号:

<?php
$base_path = "/PATH_TO_FILES/";
//$files = glob($base_path."*.mp3");
$files = array('20130403-blah283.mp3','20130403-blah284.mp3','20130403-blah285.mp3','20130403-blah286.mp3','20130403-blah287.mp3'); // for testing

foreach($files as $file){
    $pieces = explode("-",$file);
    $new_filename = $pieces[1];
    $timestamp = $pieces[0];
    $directory = substr($timestamp,0,4)."/".substr($timestamp,4,2)."/".substr($timestamp,6)."/";
    if(!is_dir($base_path.$directory)){
        mkdir($directory,0777);
    }
    copy($base_path.$file,$base_path.$directory.$new_filename);
    //unlink($base_path.$directory.$new_filename); // DELETES OLD FILE ONLY UNCOMMENT WHEN YOUR READY!
}

关于PHP 脚本将大文件夹中的文件排序到基于日期的子文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16178820/

相关文章:

php - 来自链接参数的多个 $_GET

php - Zend Server 8 PDO 无法通过 CLI 找到驱动程序

php - HHVM 与 FastCGI 安装错误

c# - 如何在不将整个文件加载到内存的情况下读取/流式传输文件?

Java:为什么这不创建最后一个文件夹?

php - 在 1 个类中使用多个 mysql 连接

php - $.ajax 错误无法捕获 php 抛出的异常

html - 如何在单个 csh/perl/python 脚本中将 20 个 .html 文件从 Linux 传输到 Windows?

linux - 将函数的返回值保存在文件中

java - 将文件加载到内存中(Java)?