ls | sed -n '/[A-Z]/s/.*/mv & \L&/e'
公司之前用的windows server 服務器 文件大小寫都同樣。 新遷移到centos 服務器上,發現有些上傳圖片是大寫的擴展名。php
1 <?php 2 $path=$_SERVER['DOCUMENT_ROOT'].'/uploadfile';//要查找的目錄 3 echo $path; 4 //var_dump(opendir($path)); //測試系統是否有權限執行 5 //die('end'); 6 if($handle = opendir($path)){ 7 while(false !== ($file = readdir($handle))){ 8 if($file !='.' && $file !=".."){ 9 if(is_dir($path.'/'.$file)){ 10 nextdir($path.'/'.$file); 11 }else{ 12 echo $file; 13 } 14 } 15 } 16 } 17 /***循環目錄***/ 18 function nextdir($dir){ 19 $handle=opendir($dir); 20 while(false !== ($file=readdir($handle))){ 21 if($file !='.' && $file !='..'){ 22 if(is_dir($dir.'/'.$file)){ 23 nextdir($dir.'/'.$file); 24 25 }else{ 26 renamejpg($dir.'/'.$file); 27 } 28 } 29 } 30 } 31 /**修改文件名**/ 32 function renamejpg($file){ 33 if(substr($file,-3)=='JPG'){ 34 file_put_contents('rename.log',$file."\n",FILE_APPEND); 35 rename($file,substr($file,0,-3).'jpg'); 36 echo $file.'<br>'; 37 } 38 } 39 40 ?>
在本地調試是ok的,但在服務器上不行。發現是權限的問題。服務器php-fpm 是用nobody運行的,沒有權限運行opendir.後新建一個php-fpm 用www賬號運行。windows