파일의 문자열을 파일 이름에 추가

파일의 문자열을 파일 이름에 추가

첫 번째 줄에 있는 문자열을 포함하도록 파일 이름을 바꿔야 합니다.

전임자:

[acoder@test]# head -1 FILE001.DAT
XYZ123

내 추측은 다음과 같습니다.

for file in /some/dir/*.DAT
do
        CODE=`head -1 "$file"`
        echo "${file%.DAT}.$CODE.DAT"
done

산출:

.DATa/some/dir/FILE001.XYZ123

다음을 볼 수 있을 것으로 예상됩니다:

/some/dir/FILE001.XYZ123.DAT

무엇이 잘못되었나요?

답변1

파일이 Windows 시스템의 파일인 경우 끝에 캐리지 리턴 문자가 있을 수 있습니다.

CODE다음과 같이 변수에 할당하여 이 문제를 해결할 수 있습니다 .

CODE="$( head -n 1 "$file" | tr -d '\r' )"

관련 정보