특정 파일 형식의 파일 이름만 바꾸도록 `while read; mv printf` 코드를 수정하려면 어떻게 해야 합니까?

특정 파일 형식의 파일 이름만 바꾸도록 `while read; mv printf` 코드를 수정하려면 어떻게 해야 합니까?

문제의 코드:

ls | cat -n | while read n f; do mv "$f" `printf "video_%03d.mp4" $n`; done

위 코드는 실행 디렉터리의 모든 파일/폴더 이름을 다음과 같이 바꿉니다.

video_001.mp4
video_002.mp4
video_003.mp4
and so on... 

그러나 특정 유형의 파일만 대상으로 지정하는 것이 좋습니다. 예를 들어 .mp4모든 것(디렉토리 포함)의 이름을 바꾸는 것보다 파일 이름만 바꾸는 것이 좋습니다.

답변1

.mp4그러면 구문 분석 없이 모든 파일의 이름이 변경됩니다 ls.

i=1; for file in *.mp4; do mv "$file" $(printf "video_%03d.mp4" "$i"); i=$((i + 1)); done

명령문에는 모든 glob을 사용할 수 있습니다 for file in .... 를 사용하여 다른 기준을 적용할 수 있습니다 find.

관련 정보