我有许多用数字命名的日志文件。
100001.txt
100002.txt
...
119998.txt
119999.txt
现在我想将它们与每10个数字相结合。为exapmle:100000.txt - 100009.txt
- >名为10000a.txt
,100010.txt - 100019.txt -> named
10001a.txt , 100020.txt - 100029.txt
- >名为10002a.txt
... 119990.txt - 119999.txt -> named
11999a.txt`。
然后删除了所有旧文件。
$files = glob('/var/logs/my_log/'*');
foreach($files as $file){
$num = str_replace(array('/var/logs/my_log/','.txt'),'',$file);//get numbers like 100000
if($num%10==0){
$name = substr($num, 0, -1).'a.txt';//10001a.txt
foreach(array_chunk($num, 10) as $values) {
echo $values.'<br>';//this will group by 1000001-1000010, but i need 1000000-1000009
//chmod('/var/logs/my_log/'.$values.'.txt',0777);//should i set 0777 for write and remove files?
//$txt.=file_get_contents('/var/logs/my_log/'.$values.'.txt');//get old files value
//unlink('/var/logs/my_log/'.$values.'.txt');//remove old files
}
//file_fut_contents('/var/logs/my_log/'.$name.'.txt',$txt);//save into new file
//$name=$txt=NULL;//unset var
}
}
答案 0 :(得分:0)
您可以使用fopen($filename, $mode)
功能实现此目的。它有一个追加模式,将文件指针放在给定文件的末尾。从那里,您可以使用其他文件功能,如fwrite()
和fclose()
。关于如何在manual
答案 1 :(得分:0)
独自找出方法。
<?php
$files = glob('/var/logs/my_log/*');
foreach($files as $file){
$num =str_replace(array('.txt','/var/logs/my_log/'),'',$file);
$txt.=file_get_contents($file).'/r/n';
if(substr($num,-1)==9){
file_put_contents('/var/logs/my_log/'.substr($num,0,-1).'a.txt',$txt);
$txt=NULL;
}
unlink($file);
}
?>