ファイル名から「/」パスを削除する

ファイル名から「/」パスを削除する

親ディレクトリ名に基づいてファイル名を指定しようとしています。にあるファイルの場合は、ファイル名を、または(一部の定数が追加されたテキストと拡張子に関連していますが質問には関係ありません)./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)拡張を小文字に変換するパラメータ拡張フラグ。

関連情報