파일 이름 앞의 10자리 숫자 제거

파일 이름 앞의 10자리 숫자 제거

파일 이름 시작 부분에 10자리 숫자가 추가된 수천 개의 이미지 파일이 있습니다. 10자리의 각 문자열 뒤에는 밑줄이 옵니다. 그것들은 다음과 같습니다:

1318487644_IMG_2158.jpg

다음 내용을 방해하지 않고 10dig 숫자와 밑줄을 제거해야 합니다. 결과는 다음과 같습니다.

IMG_2158.jpg

파일 이름에서 원하지 않는 다른 콘텐츠를 찾거나 바꾸려면 이 명령을 사용합니다.

ls -1 | while read file; do new_file=$(echo $file | sed s/foo/bar/g); mv "$file" "$new_file"; done

파일 이름의 나머지 부분을 변경하지 않고 선행 10dig+밑줄 조합을 제거하려면 위 명령을 편집하려면 어떻게 해야 합니까?

답변1

어떤 사람들은 ls출력을 구문 분석하는 것이 나쁜 습관이라고 생각합니다. 따라서 다음과 같이 보일 수 있습니다(posix 쉘을 가정).

for file in /path/to/file/*
do
    part_to_remove=$(echo "$file" | grep -Eo '[[:digit:]]{10}_')
    if ! [ -z $part_to_remove ]; then
        new_file="${file#$part_to_remove}"
        mv "$file" "new_file"
    fi 
done

답변2

POSIX적으로:

for f in ./*; do
  mv -- "$f" "${f#./[0-9]*_}"
done

관련 정보