Shell脚本:递归目录下所有文件由DOS/Windows格式转换为Unix/Linux格式

#!/usr/bin/env bash
# Author    : 蛙鳜鸡鹳狸猿
# create_ts : 2019-06-06
# program   : Convert DOS/Mac text file format into Unix


function dos_to_unix() {
    # Convert DOS/Mac text file format into Unix under built-in `dos2unix` handler.
        # $1: OS directory path
    local path="$1"
    local path=${path%/}
    local IFS=$'\n'
    # shellcheck disable=SC2045
    for obj in $(ls "${path}")
    do
        if [[ -d "${path}/${obj}" ]]; then
            dos_to_unix "${path}/${obj}"
        else
            dos2unix "${path}/${obj}"
        fi
    done
}


dos_to_unix "$1"

首先遍历目录下所有文件(夹),判断如果为文件夹就继续递归调用,如果不是文件夹,就调用`dos2unix`程序执行文件格式转换。如果系统没有安装`dos2unix`,手动安装一下即可,视不同系统分支可以直接用超级命令(apt / yum)安装。将脚本写入一个Shell文件,然后从Windows系统上拿过来的代码包执行时遇到“\r”等因为操作系统之间文件格式问题导致的报错时,执行一下该Shell脚本,后面将要进行格式转换的文件/文件夹名字作为参数传入,跑一下就OK了。

你可能感兴趣的:(#,Unix,/,Linux)