我想根据文件的 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