나는 이것과 똑같은 문제가 있습니다포스터그러나 나는 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
나의 첫 번째 조언은 쉘을 다른 것으로 변경하라는 것입니다. 즉, 원하는 대로 작동해야 합니다.
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