首页 文章

如果目录尚不存在,如何mkdir?

提问于
浏览
1428

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

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

13 回答

  • 7

    或者如果你想先检查存在:

    if [[ ! -e /path/to/newdir ]]; then
                mkdir /path/to/newdir
    fi
    

    -e 是korn shell的存在测试 .

    你也可以尝试谷歌搜索korn shell手册 .

  • 18
    directory_name = "foo"
    
    if [ -d $directory_name ]
    then
        echo "Directory already exists"
    else
        mkdir $directory_name
    fi
    
  • 12

    在Windows 8系统上,mkdir不再支持-p开关 .

    你可以用这个:

    IF NOT EXIST dir_name MKDIR dir_name
    
  • 10

    旧的尝试和真实

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

    在没有许多其他解决方案所具有的竞争条件的情况下,你会做你想做的事 .

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

  • 7

    您可以使用if循环来检查目录是否存在,如果它不退出则创建目录 .

    1)dir = / home / dir_name

    if [ ! -d $dir ]
    then
         mkdir $dir
    else
         echo "Directory exists"  
    fi
    

    2)您可以使用mkdir和-p选项创建目录 . 它将检查目录是否不可用 .

    mkdir -p $dir
    

    mkdir -p还允许创建目录的树结构 . 如果要使用相同的命令创建父目录和子目录,可以选择mkdir -p

    mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2
    
  • 72

    mkdir foo 即使目录存在也能正常工作 . 要使其仅在名为"foo"的目录不存在时起作用,请尝试使用 -p 标志 .

    示例: -

    mkdir -p foo
    

    仅当它不存在时,才会创建名为“foo”的目录 . :)

  • 0

    使用-p标志 .

    man mkdir
    mkdir -p foo
    
  • 63

    试试mkdir -p

    mkdir -p foo
    

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

    mkdir -p foo/bar/baz
    

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

    如果您想在父目录存在时出现错误,那么您可以先test表示该目录是否存在:

    [ -d foo ] || mkdir foo
    
  • 25

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

    [ -d newdir ] || mkdir newdir
    

    如果要显示自己的错误消息:

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

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

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

    这是一个简单的函数(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”选项,该选项以递归方式创建目录 . 希望这可以帮助 .

  • 1

    这应该工作:

    $ mkdir -p dir
    

    要么:

    if [[ ! -e $dir ]]; then
        mkdir $dir
    elif [[ ! -d $dir ]]; then
        echo "$dir already exists but is not a directory" 1>&2
    fi
    

    如果目录不存在,它将创建目录,但警告您,您尝试创建的目录的名称是否已被目录以外的其他目录使用 .

  • 0
    mkdir -p sam
    
    • mkdir =制作目录

    • -p = - 父母

    • (如果存在则没有错误,根据需要创建父目录)

相关问题