如何使用通配符获取文件夹名称并检查其唯一性

如何使用通配符获取文件夹名称并检查其唯一性

我想根据文件的 ID 将一系列文件移动到不同的文件夹中,但我想确保要将文件移动到的文件夹存在并且是唯一的

这些文件夹的名称的第一部分有一个匹配的 ID,但名称中也有一个说明(ID应该是独一无二的,但我想防止这种例外):

0123-app1
4567-app2
2020-app3
0123-shouldntbehere

我想将带有 ID 的文件移动4567到目录中4567-app2

由于描述在名称中,我需要使用通配符来查找正确的文件夹。现在我尝试在变量中回显该名称,但它无法帮助我检查它是否唯一或是否存在。

APP_PATH=`echo $APP_ID*`

建议我使用什么来找到正确的文件夹并验证它是唯一的?

谢谢

答案1

我实现它的方法是使用if带有错误代码检查的语句。[ -d ...]如果通配符分解时传递多个参数(文件夹名称),则会产生错误或者如果文件不存在。ls中的可以else让我们知道是哪种情况将我们带到这里(如果存在多个文件夹,则返回代码将为0

if [ -d ${ID}* ] 2>/dev/null; then
    echo "Folder exists and is unique"
else
    ls ${ID}* >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "No folder exists starting with ${ID}"
    else
        echo "More than one folder starting with ${ID}"
    fi
fi

相关内容