파일 이름에서 "/" 경로 제거

파일 이름에서 "/" 경로 제거

상위 디렉터리 이름을 기반으로 파일 이름을 지정하려고 합니다. 에 있는 파일의 경우 파일 이름을 또는 (일부 상수가 추가된 텍스트 및 확장명과 관련이 있지만 질문과 관련이 없음) ./dir*/dir*/로 지정하고 싶습니다 . 나는 다음과 같은 것을 가지고 있습니다 :"dir*_dir*""dir*dir*"

for file in ./dir*/dir*/*GABA*.dat; do 
 tag=${file%/*}
 tag=${tag} #here, I believe the value of the variable will be "dir*/dir*",    
   so this is where I was thinking to remove the '/' 
 tag=$(echo "$tag" | tr '[:upper:]' '[:lower:]')
mv -- "$file" "./GABA/${tag}.dat"
done

전체 코드를 평가하도록 구체적으로 요구하는 것은 아니지만(다른 비슷한 맥락에서는 잘 작동하는 것 같았습니다), 특히 "태그" 변수를 업데이트하여 dir*/dir*.

답변1

/사용. . . 교체 _:

tag=${tag//\//_}

답변2

그리고 zsh:

autoload zmv # best in ~/.zshrc
zmv -n '(dir*)/(dir*)/*GABA*.dat' 'GABA/${(L)1}${(L)2}.dat'

-n만족스러우면 삭제하세요.

(L)확장을 소문자로 변환하는 매개변수 확장 플래그입니다.

관련 정보