我必须从服务器中的每个用户的库中挑选一些文件。服务器以utf-8
编码,但文件及其名称在Latin1
中编码。因为我必须检查他们在这个剧目中有多长时间,这个名字会告诉我他们投入的日期。
我在php中编写一个例程来删除它们超过30天的时间。所有这些的语法是
/repertory/account/file_to_delete/dir/dir/dir/.../20160911000943.zip
我暂时尝试使用find。因为我不想删除每个文件,所以我使用SSH:
ssh -l createur ".$iplan." \" sudo find ".$filename." -maxdepth 1 -mindepth 1
$ filename是一个字符串,表示访问文件或文件夹的方式。 因为我不知道所有子目录和它们的数量,如果我找到一个文件夹(不是以“.zip”结尾)并返回包含所有文件夹和目录的表,我就创建一个表并再次执行。
例程如下:
function UsingTab($first_tab){
$data = $;
while (!empty($data))
{
$name_to_check= FolderOrNot(($data[count($data)-1]));
if($name_to_check== -1){ //-1 mean it is a file, not a directory
unset($data[count($data)-1]);
}
else{
unset($name_to_check[0]);
unset($data[count($data)-1]); // needed, always having a blank first element in my array
$data = array_merge($data,$name_to_check);
}
}
我的目录看起来像“/cartemère(2)/”我可以管理“(”和“)”而不是“è”或任何特殊字符。符号“?”而是出现......
我尝试只创建一个数组,但没有-maxdepth但是表格太重而无法在浏览器中使用。 我尝试直接连接控制台,但“?”还在这里它们通过FileZilla消失,并且正确显示重音。 我无法更改编码,因为它是一个生产服务器。
答案 0 :(得分:0)
我终于发现SSH不会自动使用默认语言,您需要对其进行精确处理。
ssh -l createur ".$iplan." \" sudo LANG=C find ".$filename." -maxdepth 1 -mindepth 1
LANG = C是一个强制应用程序使用默认语言输出的选项。我希望这能节省6个小时。