내 현재 파일 구조는 다음과 같습니다
- 입력하다
- 1
- 전 NII
- 2
- 전 NII
- 1
나는 그것이되기를 원합니다 :
- 입력하다
- 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