디렉토리의 파일 이름 바꾸기/열기

디렉토리의 파일 이름 바꾸기/열기

일부 디렉토리에는 다음과 같은 이름의 파일이 많이 있습니다.

...
DSC_0002
DSC_0005
DSC_0010
...

파일 이름을 바꾸거나 파일을 다시 열거하고 싶습니다

FILE_0001
FILE_0002
...

Maby, 0001이 아닌 숫자 계산을 시작해야 합니다.

답변1

이러한 파일이 포함된 디렉토리가 /path/to/dir이라고 가정하면
필요한 스크립트는 다음과 같습니다.

start=1
cd "/path/to/dir"
for file in ./*;do
  mv "${file}" "FILE_$(printf "%04d" $start)"
  start=$((start+1))
done

답변2

노력하다

ls | awk '{printf "mv %s FILE_%04d\n",$0,NR ;} ' | bash
  • 이름이 이상한 파일이 없는지 확인하세요.
  • remove |bash 부분을 미리 볼 수 있습니다.
  • NR+666667에서 시작하는 데 사용합니다 .
  • 그림과 같이 01 또는 000001을 생성하려면 %02d또는 를 사용하세요 .%06d

답변3

다음과 같이 할 수 있습니다:

#!/bin/bash 
Counter=${1:-1}   # It will take the starting number as 1st parameter
WhichDir=${2:-.}  # It will take the path as 2nd parameter

                  # We try to see if the directory exists and if you can go there
(cd "$WhichDir" 2>/dev/null) || { echo "# $WhichDir NOT FOUND " ; exit 1; }

cd "$WhichDir"                            # it exists and you can go there
shopt -s nullglob                         # see notes
for f in DSC_*                            # for all the files in this dir
do
  New_Name=$(printf "FILE_%04d.jpg" $Counter)
                                          # change .jpg in what you need
  Counter=$(($Counter +1))                # increase the counter
  echo "mv -i \"$f\" \"$New_Name\" "      # the -i will prompt before overwrite
  # mv -i "$f" "$New_Name"                # uncomment this line to make it works
exit 0

노트

  • 때를놀다위험할 수 mv있습니다. 기존 파일을 덮어쓸 수 있습니다. 디렉토리를 이동하거나 이름을 바꿀 수 있습니다. 따라서 스크립트를 실행하기 전에 시각적으로 확인하는 것이 좋습니다. 그런 다음 출력을 쉘에 파이프할 수 있습니다.
    예를 들어 ./Myscript.sh, 괜찮습니까? 그렇다면 쓸 수 있습니다 ./Myscript.sh | /bin/bash(또는 "에코" 또는 다음 줄의 주석을 지우고 수정할 수 있습니다).
  • 작성하는 것이 더 좋습니다 mv -i. 덮어쓰기 전에 메시지가 표시됩니다.
  • DSC_*현재 디렉토리에 파일이 없으면 shopt -s nullglob확장 오류가 발생하지 않습니다.

  • 일반적으로구문 분석하는 것은 안전하지 않습니다.출력ls비록 귀하의 경우에는 실제 문제가 되지 않더라도 파일에 대해 카메라의 표준 이름이 있어야 하기 때문입니다 DSC_nnnn.jpg.

  • 일반적으로 확장자가 있습니다( .jpg또는 .tif또는 .raw)... 필요에 맞게 스크립트에서 변경하거나 지우십시오.

관련 정보