错误的编码文件名称,我如何用SSH选择它们?

时间:2016-11-28 17:18:58

标签: php bash ssh

我必须从服务器中的每个用户的库中挑选一些文件。服务器以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消失,并且正确显示重音。 我无法更改编码,因为它是一个生产服务器。

1 个答案:

答案 0 :(得分:0)

我终于发现SSH不会自动使用默认语言,您需要对其进行精确处理。

ssh -l createur ".$iplan."  \"  sudo LANG=C find ".$filename."  -maxdepth 1  -mindepth 1

LANG = C是一个强制应用程序使用默认语言输出的选项。我希望这能节省6个小时。