수백 개의 파일이 있고 파일 이름에서 마지막 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