如何在linux中检查目录是不是存在。? [复制]
Posted
技术标签:
【中文标题】如何在linux中检查目录是不是存在。? [复制]【英文标题】:How to check directory exist or not in linux.? [duplicate]如何在linux中检查目录是否存在。? [复制] 【发布时间】:2012-02-06 02:40:34 【问题描述】:给定一个文件路径(例如/src/com/mot
),我如何检查mot
是否存在,如果它不使用Linux 或shell 脚本创建它??
【问题讨论】:
这能回答你的问题吗? How can I check if a directory exists in a Bash shell script? 【参考方案1】:使用 bash/sh/ksh,您可以:
if [ ! -d /directory/to/check ]; then
mkdir -p /directory/toc/check
fi
对于文件,将-d
替换为-f
,然后你可以对不存在的文件进行任何你需要的操作。
【讨论】:
您实际上并不需要支票。mkdir -p
不作用于现有目录。
这是一个公平的观点。我会把它留在里面,就好像给了 OP 框架一样,以防他们想在 mkdir
之前做其他事情。
请注意,如果目录是在第一行和第二行之间创建的,这会产生竞争条件。
@Sjoerd 确实,但是如果您只使用mkdir -p
,也会出现这种竞争条件(尽管概率窗口要小得多)(除非某些文件系统实现并公开了原子检查或-创建函数调用)。至少在上面的代码中,如果对现有目录进行虚假调用,mkdir 调用不会失败(因为无论如何都提供了-p
选项)。
@Christian 如果你想要一个原子检查或创建函数,看看 mkdir(2)【参考方案2】:
test -d /src/com/mot || mkdir /src/com/mot
【讨论】:
【参考方案3】:mkdir -p
创建目录,如果它已经存在,则不会给出错误。
【讨论】:
【参考方案4】:检查目录是否存在
if [ -d "$DIRPATH" ]; then
# Add code logic here
fi
检查目录不存在
if [ ! -d "$DIRPATH" ]; then
# Add code logic here
fi
【讨论】:
【参考方案5】:好吧,如果你只检查目录来创建它,如果它不存在,你还不如直接使用:
mkdir -p /src/com/mot
mkdir -p
如果目录不存在则创建目录,否则什么也不做。
【讨论】:
【参考方案6】:这是 baisc,但我认为它有效。如果您希望有一个动态列表来循环检查和检查,则必须设置一些变量。
if [ -d /src/com/mot ];
then
echo Directory found
else
mkdir /src/com/mot
fi
希望这就是你要找的...
【讨论】:
你错过了';'在 if 子句的结束 ']' 之后。 @Chirstian The ';'在 ']' 之后不需要,并且 ']' 不是右括号。在命令“[”的情况下,尾随的“]”只是该命令的一个参数。换行符的作用与分号相同。 @WilliamPursell 我的评论是关于问题的第一个修订版,它在“测试”命令(或“括号”,抱歉命名错误)之后的“]”之后不包含换行符,在这种情况下';'在then
之前是必需的,不是吗?
@christian,是的,换行符或 ;是必须的。当我看到问题时,换行符就位。以上是关于如何在linux中检查目录是不是存在。? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
这个'if [ -e $MY_VARIABLE ]'是不是检查linux中是不是存在变量? [复制]
Python 检查目录是不是存在,然后在必要时创建它并将图形保存到新目录? [复制]