디렉토리 이름을 사용하여 파일 이름을 바꾸는 방법은 무엇입니까?

디렉토리 이름을 사용하여 파일 이름을 바꾸는 방법은 무엇입니까?

내 현재 파일 구조는 다음과 같습니다

  • 입력하다
    • 1
      • 전 NII
    • 2
      • 전 NII

나는 그것이되기를 원합니다 :

  • 입력하다
    • 1_pre.nii
    • 2_pre.nii

내가 시도한 입력 폴더에서 :for i in */pre.nii; do echo $i_pre.nii; done

그러나 이것은 나에게 다음을 제공합니다:

    .nii
    .nii

나는 또한 다음을 시도했습니다. for i in */pre.nii; do echo ${i%/*}; done 이것은 나에게 다음을 제공했습니다:

    1
    2

%하지만 문자열 연산자를 사용하고 올바른 접미사를 추가하는 방법을 모르겠습니다 .

답변1

/\하나를 ( 이스케이프 처리하여 ) 다음으로 바꾸려면 _:

for i in */pre.nii; do echo mv "$i" "${i/\//_}"; done

문제가 없으면 삭제하세요 echo.

답변2

나는 변경하기 전에 대체 및 테스트를 위해 sed를 사용하는 경향이 있습니다.

for i in */pre.nii;
do 
   j=$(echo $i | sed 's/\//_/')
   echo $j
done

그런 다음 실행

for i in */pre.nii;
do 
   j=$(echo $i | sed 's/\//_/')
   mv -v $i $j
done

관련 정보