[PHP] 파일명에서 숫자만 남기고 앞부분은 다른 문자열 붙여 주는 스크립트

이미지로 된 여러 jpg 파일이 사진1.jpg, 사진-2.jpg, …, IMG10.jpg 형식으로 돼 있을 때 정렬을 맞추려고 일일이 파일명 바꾸는 거 맨날 하기 귀찮아서 만든 스크립트다. 물론 윈도우에선 XnView로 맨날 처리했지만. 맥에서 쓰려고.

터미널에서 사용하면 되고, 사용법은 아래와 같다.

php rename.php myfolder 새사진

이렇게 사용하면 myfolder에 있는 모든 파일(!)이 새사진01.jpg 형식으로 파일명이 바뀐다. 자리수는 알아서 맞춘다. 만약 1부터 100까지 있다면 001로 맞춘다.

아래는 소스.

if($argc != 3){
  echo "invalid!\n";
  echo "Usage: php rename.php {dir} {prefix}\n";
  echo "ex. php rename.php . mypic\n";
  exit(0);
}
$this_file = $argv[0];
$dir = realpath($argv[1]);
$prefix = $argv[2];

if($handle = opendir($dir)){
  $files = array();
  $number_length = 0;
  while(false !== ($entry = readdir($handle))){
    if($entry == '.' || $entry == '..' || $entry == $this_file || is_dir($dir . '/' . $entry)){
      continue;
    }
    $this_len = strlen(preg_replace("/[^0-9]/", '', $entry));
    if($this_len > $number_length){
      $number_length = $this_len;
    }
    $files[] = $entry;
  }

  foreach ($files as $entry) {
    $ext = pathinfo($entry, PATHINFO_EXTENSION);
    $number = sprintf("%0{$number_length}d", preg_replace("/[^0-9]/", '', $entry));
    $new_name = $prefix . $number;
    if( ! empty($ext)){
      $new_name .= '.' . $ext;
    }
    rename($dir . '/' . $entry, $new_name);
  }
  echo "done!\n";
}else{
  echo "can't open dir {$dir}.\n";
}

카테고리

17년차 풀스택 웹 개발자 안형우입니다

웹 개발에서도 중요한 것은 개념입니다.
이 블로그에는 제가 개발하며 익힌 개념들을 정리합니다.

워드프레스를 오래 다뤄 왔고 강의도 두 편 찍었습니다.
– 인프런 “워드프레스 제대로 개발하기 어드민 편, 클라이언트 편
– 클래스101 “누구나 할 수 있는 워드프레스 홈페이지 만들기 – 기획부터 출시까지 한 방에 OK

유튜브 채널에 워드프레스 관련 팁들을 올리고 있습니다.

👉 소개 더 보기

대표글

댓글 남기기