파일 이름을 포함하는 폴더 이름(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

나의 첫 번째 조언은 쉘을 다른 것으로 변경하라는 것입니다. 즉, 원하는 대로 작동해야 합니다.

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( tcshzsh) 에는 파일의 헤드(디렉토리 이름) 또는 테일(기본 이름)을 추출하는 :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

관련 정보