ファイル名の変更が可能な 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追加の改行を追加してください。

DOS 2 Unix:DOSの改行だけを2つのUnixの改行に変更します。 Macモードでは、Macの改行だけが2つのUnixの改行に変わります。

UNIX2DOS:Unix改行のみ2つのDOS改行に変更されます。 Macモードでは、Unix改行文字が2つのMac改行文字に変更されます。

そしてPankiのコメントによると、次のようにfind ファイルをインポートして名前を変更して変換できます。

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

関連情報