마지막 몇 글자를 제거하여 수백 개의 파일 이름을 바꿉니다.

마지막 몇 글자를 제거하여 수백 개의 파일 이름을 바꿉니다.

수백 개의 파일이 있고 파일 이름에서 마지막 7자를 제거하고 확장자를 유지하고 싶습니다.

고명:

abc_xyz12_4567.txt

abcde_xyz12_4567.txt

새 이름:

abc_xyz.txt

abcde_xyz.txt

답변1

노력하다

ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}' | ksh

당신은 그것을 사용할 수 있습니다

ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}'

미리보기.

답변2

당신은 그것을 사용할 수 있습니다이름을 바꿔라(또는 prename일부 운영 체제에서는):

rename 's/.{7}(\.txt)/$1/' abc*

답변3

GNU를 사용하면 tar:

touch abc_xyz12_4567.txt abcde_xyz12_4567.txt
tar --remove-files --xform='s/\(.*\).\{7\}\./\1./' -c ./* | tar -x
ls

산출

abcde_xyz.txt  abc_xyz.txt

--remove-files이렇게 하면 모든 작업이 안전하게 수행됩니다. 실제로 해당 옵션이 필요하지도 않습니다 . untar파일을 다른 디렉터리로 바꾸고 파일 이름 변경이 작동하는지 확인하면 됩니다. 아마도 다음과 같습니다:

tar --xform... | tar -C ../test -x

관련 정보