我正在接管已经建立的网站,因为原来的程序员不再可用了。
我需要重命名目录中的文件,然后将文件移动到与文件名匹配的文件夹中,但如果文件夹不存在,我需要创建文件夹。
要重命名文件我有这个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个脚本)并根据没有日期的文件名添加选项以创建文件夹(如果不存在)?
提前谢谢。