파일 이름을 바꾸십시오. 와일드카드 선택 입력, 출력에 와일드카드 값을 반환하려고 합니다.

파일 이름을 바꾸십시오. 와일드카드 선택 입력, 출력에 와일드카드 값을 반환하려고 합니다.

다음과 같은 파일 세트가 있습니다.

Q-30-09-1753.TIF
W-01-04-1753.TIF
W-31-12-1752.TIF
Y-14-12-1752.TIF

사용Windows의 git bash아래와 같이 파일 이름 끝에 문자를 넣어 파일 이름을 바꾸고 싶습니다.

30-09-1753-Q.TIF
01-04-1753-W.TIF
31-12-1752-W.TIF
14-12-1752-Y.TIF

다음 코드를 사용해 보았습니다.

for f in *.TIF ; do 
    mv "$f" "${f//[A-Z]]\-[0-9][0-9]\-[0-9][0-9]\-[0-9][0-9][0-9][0-9]\-[A-Z]/}";
    echo "$f"
done

첫 번째 부분에서는 변경할 파일을 성공적으로 선택하지만 이름을 바꿀 때 와일드카드 선택은 리터럴입니다.

답변1

게을러서 그럴지도 모르지만 나 sed한테 해줄게

newfilename=$(echo "${f}"|sed 's/\(.\)-\([^\.]*\)\.TIF/\2-\1.TIF/')
mv "${f}" "${newfilename}"

bash의 훌륭하지만 별도의 문자열 교체 방법을 배우는 대신 :)

그런데, 날짜인 경우 날짜 형식이 정렬에 도움이 되지 않습니다. ISO 날짜 형식으로 변경: YYYY-MM-DD를 사용하면 날짜를 기준으로 파일 이름을 올바르게 정렬할 수 있습니다! (그렇지 않으면 날짜를 기준으로 먼저 정렬한 다음 월, 초, 연도를 기준으로 정렬하게 됩니다.)

newfilename=$(echo "${f}"|sed 's/\(.\)-\(..\)-\(..\)-\(....\)\.TIF/\4-\3-\2-\1.TIF/')

관련 정보