如何在Shell / Bash中处理'*'?

时间:2016-04-24 02:11:38

标签: linux bash shell

我目前正在使用此代码:

target_directory_greater="/root/*/"

if [ "${target_directory}" != "${target_directory%%\***}" ]; then
    base_target_directory="${target_directory%%\***}"
    prefix_target_directory="${target_directory##**\*}"

    for t in $base_target_directory/* ; do
        if [ -d "${t}${prefix_target_directory}" ]; then
            # Found, replace target_directory with real path
            target_directory="${t}${prefix_target_directory}"
            break
        else
            continue
        fi
    done
fi

if [ ! -d "${target_directory}" ]; then
    printf "${target_directory} directory wasn't found.\\n\\n"
    exit 1
fi

如果grep找到正确的文件夹,我的脚本将移动两个文件夹。一旦grep找到要移动到的文件的正确文件夹,上面的代码就可以处理我声明的变量中的*字符,它只是使用第一个文件夹而不是指向的一个grep。有没有人在那里看到我的错误?

/root文件夹里面有一些其他随机命名的文件夹,我使用grep抓取一个特定的字符串,然后将文件单独移动到该文件夹​​。但由于存在*,因此会导致问题。

0 个答案:

没有答案