Substituir nome do arquivo pelo nome da pasta (csh)

1

Eu tenho exatamente a mesma pergunta que este cartaz mas, Estou usando csh.

Eu posso pegar o nome do arquivo que eu quero

set x = V_181_V_d_2_um_phi_4.50_eV_tOn_0.5_ns/SteadyState_out.e
cat "'echo $x | cut -d "/" -f1'.e"
    cat: V_181_V_d_2_um_phi_4.50_eV_tOn_0.5_ns.e: No such file or directory

Mas não consigo descobrir como fazer algo com essa string. Algum conselho?

    
por user1543042 08.03.2017 / 16:30

2 respostas

1

Meu primeiro conselho seria mudar seu shell para outra coisa. Dito isso, isso deve fazer o que você quer:

set file = "V_181_V_d_2_um_phi_4.50_eV_tOn_0.5_ns/SteadyState_out.e"
set newname = "'echo $file | cut -d "/" -f1'.e"
mv "$file" "$newname"

Isso não salvará o arquivo em seu diretório original. Eu não sei se é isso que você quer, já que você não explicou realmente o que você está tentando alcançar, mas se você quiser que o arquivo permaneça em seu diretório original, você pode fazer:

set dirname = "V_181_V_d_2_um_phi_4.50_eV_tOn_0.5_ns"
set file = "SteadyState_out.e"
set newname = "'echo $dirname | cut -d "/" -f1'.e"
mv "$dirname"/"$file" "$dirname"/"$newname"
    
por 08.03.2017 / 16:37
1

csh (e tcsh e zsh ) têm :h , :t modificadores para extrair head (dirname) ou tail (basename) de um arquivo.

Então você pode fazer:

 set x = V_181_V_d_2_um_phi_4.50_eV_tOn_0.5_ns/SteadyState_out.e
 mv -- $x:q $x:h/$x:h:t:q
    
por 08.03.2017 / 16:55