IT/PHP

[PHP] 특정폴더 하위 모든 파일 이름 변경 rename

월공 2021. 3. 25. 15:05
728x90
300x250

경로를 잘맞춰줘야합니다.

$old = "../"."변경전 파일명";
$new = "../"."변경후 파일명";

$result = rename($old, $new);

if($result){
	echo "OK";
}else{
	echo "NO";
}

<?php


function myScanDir($dir, $level, $rootLen)
{

	global $pathLen;

	if ($handle = opendir($dir)) {

		$allFiles = array();

		while (false !== ($entry = readdir($handle))) {
			if ($entry != "." && $entry != "..") {
				if (is_dir($dir . "/" . $entry)) {
					$allFiles[] = "D: " . $dir . "/" . $entry;
				} else {
					$allFiles[] = "F: " . $dir . "/" . $entry;
				}
			}
		}
		closedir($handle);

		natsort($allFiles);

		foreach ($allFiles as $value) {
			$displayName = substr($value, $rootLen + 4);
			$fileName    = substr($value, 3);
			$linkName    = str_replace(" ", "%20", substr($value, $pathLen + 3));

			$fileCheck = substr($fileName, -3);

			if (is_dir($fileName)) {
				
				if (is_numeric($realFolder)) {
					myScanDir($fileName, $level + 1, strlen($fileName));
				}
			} else {

				//확장자 wav 파일만
				if ($fileCheck == "wav") {
                	$linkName_arr = explode('/', $linkName);
                    
                    // $linkName_arr[1] 폴더명
                    // $linkName_arr[2] 파일명
					
					$old = "../" . "변경전 파일명";
					$new = "../" . "변경후 파일명";

					rename($old, $new);
				}
			}
			usleep(1000);
		}
	}
}

$root = $_SERVER['DOCUMENT_ROOT'];
myScanDir($root, 0, strlen($root));

?>

 

웹 서버 디렉토리 하위에 위치한 wav 파일들이 있는데 샘플로 테스트할게 많이 필요한데 파일명이 다달라야해서

일괄로 파일들을 긁어와서 파일명을 해당 폴더명을껴서 작업을 할때 필요했었습니다.

하위 폴더 모두 접근해서 wav 확장자인것만 모두 긁어와서 일괄 해당 폴더명으로 rename 하게끔 조정했네요.

아래와 같은 구조였습니다.

 

D드라이브
  - Record(웹 서버 root)

             -20200324

                           녹음파일1_20200324.wav

                           녹음파일2_20200324.wav

                           녹음파일3_20200324.wav

             -20200325

                           녹음파일1_20200325.wav

                           녹음파일2_20200325.wav

                           녹음파일3_20200325.wav

 

728x90
300x250