파일 이름 변경이 가능한 Unix2Dos 하위 디렉터리

파일 이름 변경이 가능한 Unix2Dos 하위 디렉터리

본질적으로 실행을 처리하는 가장 좋은 방법을 찾고 있습니다.Unix2Dos특정 확장자를 가진 모든 파일 .nux.

실제로 확장명을 .nun.

현재 내 코드는 이를 달성하기 위해 하드코딩된 각 디렉터리에 수동으로 푸시되지만, 이를 수행하는 더 깔끔한 방법이 있다고 생각/희망합니다. 아래의 각 폴더를 재귀적으로 드릴다운 /testpath/temp/하고 파일 이름을 바꾸고 .nuxLinux .nun줄 끝을 Windows 줄 끝으로 변경할 수 있는 코드입니다.

BASH 버전 3.2.57(2) - 출시됨

pushd /testpath/temp/xyz
if [[ -f PRXYZ.NUX ]]
  then
    sed 's/$/\r/' PRXYZ.NUX > PRXYZ.NUN
    rm PRXYZ.NUX
fi
popd

pushd /testpath/temp/abc
if [[ -f PRABC.NUX ]]
  then
    sed 's/$/\r/' PRABC.NUX > PRABC.NUN
    rm PRABC.NUX
fi
popd

pushd /testpath/temp/lmn
if [[ -f PRLMN.NUX ]]
  then
    sed 's/$/\r/' PRLMN.NUX > PRLMN.NUN
    rm PRLMN.NUX
fi
popd

답변1

개행 변환의 경우 다음이 있습니다.dos2unixLinux 시스템에서 사용할 수 있는 패키지 Provideinf 를 unix2dos사용하면 다음을 사용하는 대신 파일을 변환할 수 있습니다 sed.

-ascii 개행 문자만 변환됩니다. 이것이 기본 변환 모드입니다.

그리고

-l, --newline추가 줄바꿈을 추가하세요.

도스2유닉스: DOS 줄바꿈만 두 개의 Unix 줄바꿈으로 변경합니다. Mac 모드에서는 Mac 줄바꿈만 두 개의 Unix 줄바꿈으로 변경됩니다.

UNIX2DOS: Unix 개행만 2개의 DOS 개행으로 변경됩니다. Mac 모드에서는 Unix 개행 문자가 두 개의 Mac 개행 문자로 변경됩니다.

그리고 Panki의 의견에 따르면 다음 find 을 사용하여 파일을 가져와 이름을 바꾸고 변환할 수 있습니다.

find /testpath/temp/ -type f -name "*.NUX" \
    -exec sh -c 'unix2dos "$1"; mv "$1" "${1%.NUX}.NUN"' _ {} \;

관련 정보