带有文件重命名的 Unix2Dos 子目录

带有文件重命名的 Unix2Dos 子目录

我正在寻找处理本质上执行的最佳方法Unix2Dos具有特定扩展名的所有文件.nux

我实际上想将扩展名重命名为.nun.

现在,我的代码手动推送到每个硬编码目录中以实现此目的,但我认为/希望有一种更干净的方法来实现此目的。可以递归地深入到下面的每个文件夹/testpath/temp/并将文件“重命名”.nux.nun并将 Linux 行结尾更改为 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 系统上可用,providinf unix2dos,您可以使用它来转换文件,而不是使用sed

-ascii 仅转换换行符。这是默认的转换模式。

-l, --newline添加额外的换行符。

DOS2UNIX:仅将 DOS 换行符更改为两个 Unix 换行符。在 Mac 模式下,只有 Mac 换行符更改为两个 Unix 换行符。

UNIX2DOS:仅 Unix 换行符更改为两个 DOS 换行符。在 Mac 模式下,Unix 换行符更改为两个 Mac 换行符。

而且,根据 Panki 的评论,您可以用来find 抓取文件,重命名它们并转换:

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

相关内容