파일 이름의 일부를 디렉터리 이름으로 바꿉니다.

파일 이름의 일부를 디렉터리 이름으로 바꿉니다.

다른 많은 파일이 있는 폴더가 있는데 ACB*그 중 일부는 다음과 같습니다.scanAC_*

scanAC호출된 부분을 제거 하고 해당 부분이 있는 디렉터리 이름으로 바꾸고 싶습니다 .

예를 들어, 디렉토리에 ACB_200315파일이 포함되어 scanAC_typefile_2S.dcm있는데 마지막 파일을 다음과 같이 만들고 싶습니다.ACB_200315_typefile_2S.dcm

지금 시도했지만(Linux, SSH, 이름 바꾸기 옵션을 사용할 수 없음) 작동하지 않습니다.

for i in ACB*; do
cd ${i}
  mv scanID* ${i/scanID/${PWD##*/}};
cd ..
done

답변1

처음에는 작동하지 않았던 Costas가 제공한 스크립트를 조정하여 작동시키려면 다음 스크립트를 사용하세요.

for d in ACB*; do
  cd ${d}
    for f in scanID*; do
    mv "${f}" "${d}${f#scanID}" 
    done
  cd ..
done

답변2

"몇 개의 파일"의 경우 스크립트를 약간 수정해야 합니다.

for d in ACB* ; do
    for f in ${d}/scanID* ; do
        mv "${f}" "${f/scanID/${d}}"
       #mv "${f}" "${d}/${d}${f#*scanID}"
    done
done

또는 사용찾다대신에

find ACB* -name 'scanID*' -exec bash -c 'mv "$0" ""${0/scanID/${0%\/*}}"' {} \;

관련 정보