如何将文件传递到处理文件夹的脚本

时间:2017-04-20 01:55:00

标签: bash file recursion directory

所以我有这个bash脚本,它将重命名当前目录中的所有文件。我需要帮助修改它,所以我可以只指定将被重命名的某些文件,但仍然能够将其传递给目录。我对bash并不是很熟悉,所以这对我来说相当混乱。

my-dev-svr

1 个答案:

答案 0 :(得分:0)

您的脚本有很多初学者错误,但标题中的实际问题有一些优点。

对于这样的任务,我会选择递归解决方案。

tolower () {
    local f g
    for f; do
        # If this is a directory, process its contents first
        if [ -d "$f" ]; then
            # Recurse -- run the same function over directory entries
            tolower "$f"/*
        fi
        # Convert file name to lower case (Bash 4+)
        g=${f,,}
        # If lowercased version differs from original, move it
        if [ "${f##*/}" != "${g##*/}" ]; then
            mv "$f" "$g"
        fi
    done
}

注意如何引用包含文件名总是的变量(否则,您的脚本将在包含shell元字符的字符的文件名上失败)以及Bash如何built-in functionality for lowercasing a variable's value(在最近的版本中。)

此外,在请求人工调试帮助之前,切向,don't use ls in scripts并尝试http://shellcheck.net/