여러 파일이있는 폴더가 있습니다. 이름에 제가 바꾸고 싶은 표현이 있습니다.
예를 들면 :
find /path/ -type f -name '*0050ABC_01032013*'
나에게 다음과 같은 출력을 제공합니다.
/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/mesh/0050ABC_01032013_Rhemi.gii.minf
/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/Lcortex_0050ABC_01032013.nii
/path/0050ABC_01032013/t1mri/T1pre_2013-3-1/default_analysis/segmentation/Lgrey_white_0050ABC_01032013.nii.minf
/path/0050ABC_01032013/ct/CTpost_2013-3-1/registration/CT-0050ABC_01032013_CTpost_2013-3-1_TO_Scanner_Based.trm
0050ABC_01032013을 0044CBA_01011901로 변경하고 싶습니다.
나는 이것을 시도했다 :
find /path/ -type f -name '*0050ABC_01032013*' -execdir rename s/\.\/(w+)0050ABC_01032013(w+)$/$10044CBA_01011901$2/' {} \;
하지만 작동하지 않습니다. 어떻게해야합니까?
rename
변경하려는 부분 만 지정하면 나머지는 그대로 유지됩니다. g
경로의 모든 항목을 수정하는 데 사용 합니다 (디렉토리 이름 포함).
find /path/ -type f -name '*0050ABC_01032013*' -exec rename -n 's/0050ABC_01032013/0044CBA_01011901/g' '{}' \;
-n
실제로 파일 이름을 바꾸려면 테스트 후 제거
find /path/ -type f -name '*0050ABC_01032013*' -exec rename 's/0050ABC_01032013/0044CBA_01011901/g' '{}' \;
경로에 같은 이름 의 디렉토리가 있고 디렉토리 이름을 변경 하지 않으려는 경우 기본 이름 만 다음과 같이 수정되도록 할 수 있습니다.
find /path/ -type f -name '*0050ABC_01032013*' -exec rename -n 's/0050ABC_01032013([^\/]*)$/0044CBA_01011901$1/' '{}' \;
이렇게하면 /
뒤에 문자 가 있으면 문자열이 일치하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다