remove o caminho “/” do nome do arquivo

1

Estou tentando nomear arquivos com base em seus nomes de diretório pai. Com um arquivo em ./dir*/dir*/ , gostaria de nomear o arquivo "dir*_dir*" ou "dir*dir*" (além de alguns textos e extensões anexados constantes, mas isso não é relevante para a pergunta). Eu tenho algo parecido com:

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

Não estou pedindo especificamente a avaliação do código geral, embora isso também seja bem-vindo (ele é executado de forma adequada em outro contexto semelhante), mas particularmente como atualizar minha variável "tag" para remover o "/" entre %código%. Obrigado!

    
por focusbob 30.08.2016 / 16:52

2 respostas

3

Substitua / por _ :

tag=${tag//\//_}
    
por 30.08.2016 / 16:57
1

com zsh :

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

Remova -n se estiver feliz.

(L) é um sinalizador de expansão de parâmetro para converter a expansão para minúscula.

    
por 30.08.2016 / 16:59