파일 이름을 다시 정렬하고 제거하는 방법

파일 이름을 다시 정렬하고 제거하는 방법

cmd(Ubuntu)의 파일 이름에서 임의의 숫자를 제거하려고 합니다.

내가 하고 싶은 일은:

279796_3D AXL MPR_26438044_0001.dcm —> 279796_3D AXL MPR_0001.dcm

279796_3D AXL MPR_26438446_0011.dcm —> 279796_3D AXL MPR_0011.dcm

또한 Python에서 이를 수행할 수 있는 방법이 있습니까?

파일 이름 뒤의 임의의 숫자를 재배열한 다음 모두 삭제하겠습니다. 하지만 막혔어요.

답변1

Perl 기반 파일 이름 바꾸기 사용(Ubuntu 패키지에서 rename):

$ rename -n 's/_\d+_/_/' *.dcm
rename(279796_3D AXL MPR_26438044_0001.dcm, 279796_3D AXL MPR_0001.dcm)
rename(279796_3D AXL MPR_26438446_0011.dcm, 279796_3D AXL MPR_0011.dcm)

사용 mmv:

$ mmv -n '*_*_*_*.dcm' '#1_#2_#4.dcm'
279796_3D AXL MPR_26438044_0001.dcm -> 279796_3D AXL MPR_0001.dcm
279796_3D AXL MPR_26438446_0011.dcm -> 279796_3D AXL MPR_0011.dcm

-n그것이 올바른 일을 할 것이라는 확신이 들면 제거하십시오.

bash 셸 및 KSH 스타일 확장 와일드카드를 사용합니다.

$ shopt -s extglob

$ for f in *.dcm; do echo mv -n -- "$f" "${f/_+([0-9])_/_}"; done
mv -n -- 279796_3D AXL MPR_26438044_0001.dcm 279796_3D AXL MPR_0001.dcm
mv -n -- 279796_3D AXL MPR_26438446_0011.dcm 279796_3D AXL MPR_0011.dcm    

여기에서 echo올바른 일을 하고 있다는 확신이 들면 제거하세요.

답변2

파일 이름을 일괄적으로 바꿀 수 있습니다파이썬 3 사용 repathlib모듈.

python3 -c 'import re, pathlib
for f in pathlib.Path(".").glob("*.dcm"):
  f.rename(re.sub(r"_\d+(?=_)","",f.name))
'

답변3

전화하면 cut트릭이 수행됩니다.

cut -d_ -f-2,4-

테스트해보세요:

echo "279796_MPR_26438044_0001.dcm" | cut -d_ -f-2,4-

이것을 사용하여 여러 파일의 이름을 다음과 같이 바꿉니다.

for f in *.dcm; do mv "$f" "$(echo "$f" | cut -d_ -f-2,4-)"; done

cut_구분 기호( )가 나타날 때마다 단어를 분할 하고 -d _첫 번째부터 두 번째( -f-2)까지, 네 번째부터 마지막( )까지 ,-4-필드를 인쇄합니다.

관련 정보