shell创建文件夹 - shell判断文件不存在




仅当dir不存在时如何mkdir? (8)

我正在编写一个shell脚本,以便在AIX上的KornShell(ksh)下运行。 我想使用mkdir命令来创建一个目录。 但目录可能已经存在,在这种情况下,我不想做任何事情。 因此,我想要测试以查看目录不存在,或者抑制mkdir在尝试创建现有目录时抛出的“文件存在”错误。

任何想法如何最好地做到这一点?


mkdir在Windows 8+系统上不再支持-p切换。

你可以使用这个:

IF NOT EXIST dir_name MKDIR dir_name

使用-p标志。

man mkdir
mkdir -p foo

如果您不想显示任何错误消息:

[ -d newdir ] || mkdir newdir

如果你想显示你自己的错误信息:

[ -d newdir ] && echo "Directory Exists" || mkdir newdir

尝试mkdir -p

mkdir -p foo

请注意,这也会创建任何不存在的中间目录; 例如,

mkdir -p foo/bar/baz

将创建目录foofoo/barfoo/bar/baz如果它们不存在)。

如果在父目录不存在时想要出现错误,并且想要创建该目录(如果该目录不存在),则可以先test该目录的存在:

[ -d foo ] || mkdir foo

旧的尝试和真实

mkdir /tmp/qq >/dev/null 2>&1

在许多其他解决方案都没有的竞争条件下,你会做你想做的。

有时最简单(和最丑陋的)解决方案是最好的。


用一个命令定义复杂的目录树

mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

这是一个简单的函数(bash shell),它可以让你创建一个目录,如果它不存在。

#----------------------------------
# Create a directory if it doesn't exist
#------------------------------------
createDirectory() {
    if [ ! -d $1 ]
        then
        mkdir -p $1
    fi
}

你可以调用上面的函数:

createDirectory / tmp / fooDir / BarDir

上面创建了fooDir和BarDir(如果它们不存在)。 请注意递归创建目录的mkdir命令中的“-p”选项。 希望这可以帮助。


directory_name = "foo"

if [ -d $directory_name ]
then
    echo "Directory already exists"
else
    mkdir $directory_name
fi




mkdir