我有与此完全相同的问题海报但是,我正在使用 csh。
我可以获得我想要的文件名
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
但我不知道如何用该字符串做任何事情。有什么建议吗?
答案1
我的第一条建议是将你的 shell 更改为其他东西。也就是说,这应该做你想要的:
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"
这不会将文件保存在其原始目录中。我不知道这是否是您想要的,因为您实际上没有解释您想要实现的目标,但如果您希望文件保留在其原始目录中,您可以执行以下操作:
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"
答案2
csh
(tcsh
和zsh
)具有:h
,:t
修饰符来提取文件的头(目录名)或尾部(基本名)。
所以你可以这样做:
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