
MOV001.mpg, MOV002.mpg 등과 같은 이름을 가진 파일이 많이 있습니다. 모두 날짜-시간이 다릅니다.
2012 08 05 13 45 33 MOV001.mpg, 2012 09 02 23 45 07 MOV002.mpg 등으로 바뀌도록 이름을 바꾸려면 어떻게 해야 합니까?
즉, 이름을 바꾼 파일에서 날짜 및 시간 정보를 어떻게 추출할 수 있습니까?
미리 감사드립니다.
답변1
테스트되지 않음:
for f in *.mpg; do
mv "$f" "$(stat -f "%m" -t "%Y %m %d %H %M %S" "$f") $f"
done
stat -f "%m"
파일의 마지막 수정 날짜를 생성해야 하며 -t "%Y %m %d %H %M %S"
요구 사항에 따라 날짜 형식을 지정해야 합니다.
답변2
원래 질문은 결과 파일도 파일 확장자로 끝나는 것을 지정합니다. 이식 가능한 방식으로 이 작업을 수행하려면 bash에서 내장된 확장 기능을 가져와 /path/to/file.ext
다음 ${f##*.}
과 같은 한 줄의 결과를 얻습니다.
for f in *.FOO; do mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}" ; done
그리고 코드 블록은
for f in *.FOO ; do
mv "$f" "$( /usr/bin/stat -f "%Sm" -t "%Y%m%d_%H%M%S" ).${f##*.}"
done
따라서 FOO를 변경하면(예: *.mpg에서 *.png로) 출력 파일 이름이 정상입니다.