从文件名中删除路径“/”

从文件名中删除路径“/”

我试图根据文件的父目录名称来命名文件。对于 中的文件./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

我并不是特别要求对整个代码进行评估,尽管这也会受到欢迎(它在另一个类似的上下文中似乎运行正常),但特别是如何更新我的“tag”变量以删除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)是一个参数扩展标志,用于将扩展转换为小写。

相关内容