将文件名替换为包含文件夹名称 (csh)

将文件名替换为包含文件夹名称 (csh)

我有与此完全相同的问题海报但是,我正在使用 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

cshtcshzsh)具有: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

相关内容