파일 이름을 폴더 이름으로 일괄 변경

파일 이름을 폴더 이름으로 일괄 변경

다음과 같은 폴더 구조가 있습니다: "Pictures/2015/2015-01-02/random_name.jpg" 파일 이름을 "2015-01-02 001.jpg", "2015-01-02 002 "로 바꾸고 싶습니다. . jpg' 등

저는 bash 프로그래밍과 perl 표현에 익숙하지 않으므로 도움을 주시면 대단히 감사하겠습니다! 미리 감사드립니다

답변1

cd target_dir
dcomp="$(basename "$(pwd)")"
count=1
for file in *; do
    ext="${file##*.}"
    mv -v "$file" "$dcomp $(printf '%03d' "$count").$ext"
    (( count++ ))
done

이는 실제로 결과 파일 이름에 공백이 필요하다고 가정하는데 이는 좋은 생각이 아닙니다. 물론 루프 내부의 모드를 원하는 대로 변경할 수 있습니다. 여러 디렉터리에 대해 이 작업을 수행하려면 전체 내용을 그 위의 루프에 배치하세요.

답변2

그게 당신이 필요한 전부입니다;)

 cd Pictures/2015/2015-01-02
 c=0 curdir=${PWD##*/} rename -n '
     s/.*/sprintf("%s %.03d.jpg", $ENV{curdir}, $ENV{c}++)/e' *jpg

분명히 이것은 Perl의 이름 변경입니다.

-n테스트(모의 실행) 후 스위치를 제거합니다.

관련 정보