重命名,移动到文件夹,然后创建文件夹

时间:2014-09-15 15:18:30

标签: php shell

我正在接管已经建立的网站,因为原来的程序员不再可用了。

我需要重命名目录中的文件,然后将文件移动到与文件名匹配的文件夹中,但如果文件夹不存在,我需要创建文件夹。

要重命名文件我有这个PHP代码,它使用的是网站的原始程序员(经过测试并且正在按预期工作,让我澄清文件类似于STV12543.htm,需要12543_Todays-Date热媒)

<?php 

function dirList ($directory, $prefijo )
{
  $results = array();
$handler = opendir($directory);

while ($file = readdir($handler)) {
    $comienzo = substr($file, 0, 3);
    if ($file != '.' && $file != '..' && $comienzo== $prefijo)
        $results[] = $file;
}
closedir($handler);
return $results;
}

$directory = "ws/archivos-cli/";
$prefijo = "STV";
$resultado = dirList($directory, $prefijo);
foreach($resultado as $file){
        $ultima_modificacion = filemtime($directory.$file);
        $ultima_modificacion = date("Y-m-d", $ultima_modificacion);
        $name = split('STV',$file);
        $name = split('.htm',$name[1]);
        $newname = $name[0].'_'.$ultima_modificacion.'.htm';
        //if (!file_exists($directory.$newname))
        rename($directory.$file, $directory.$newname);
}

?>

我想我可以用cron调用该脚本,但是对于移动文件,我有一个sh脚本

#!/bin/sh

source_dir='/ws/archivos-cli/' 
target_dir='/ws/archivos-cli/subfolders'
name_separator='_'

(
cd ${source_dir} || {
    echo "${source_dir} no existe!" ; exit 1
}
for i in `ls` ; do
    client_name="`echo ${i} | cut -f1 -d${name_separator}`"
    echo "-> Moving file [${i}] to [${target_dir}/${client_name}/] folder"
    mv -vf ${i} ${target_dir}/${client_name}/ || break
    echo
done
)

那么,我如何组合它们(2个脚本)并根据没有日期的文件名添加选项以创建文件夹(如果不存在)?

提前谢谢。

0 个答案:

没有答案