本質的に実行を処理する最良の方法を探しています。Unix2Dos特定の拡張子を持つすべてのファイル.nux
。
実際に拡張子を.nun
。
現在、私のコードはこれを達成するためにハードコーディングされた各ディレクトリに手動でプッシュされていますが、これを行うためのよりきれいな方法があると思います/希望しています。以下の各フォルダを再帰的にドリルダウンし、/testpath/temp/
ファイル名を変更し、.nux
Linux.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
改行変換の場合、次のものがあります。dos2unix
Linuxシステムで利用可能なパッケージ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"' _ {} \;