How to mkdir only if a dir does not already exist?
我正在编写一个shell脚本,在AIX上的kornshell(ksh)下运行。我想使用
有没有想过如何最好地做到这一点?
1 | mkdir -p foo |
请注意,这也将是任何中间创建目录不存在,例如,
1 | mkdir -p foo/bar/baz |
将创建一个目录
在一些实施的GNU
如果你想当一个错误的父目录不存在,如果它要创建的目录不存在
1 | [ -d foo ] || mkdir foo |
这应该工作。
1 | $ mkdir -p dir |
或:
1 2 3 4 5 | if [[ ! -e $dir ]]; then mkdir $dir elif [[ ! -d $dir ]]; then echo"$dir already exists but is not a directory" 1>&2 fi |
这将创建一个目录,如果它不是你的存在,但警告称,如果名称的目录你想利用的东西已经创建的是一个比其他目录。
使用的P -标志。
1 2 | man mkdir mkdir -p foo |
一个复杂的目录树和相关的命令
1 | mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a} |
如果你不想显示的任何错误信息:
1 | [ -d newdir ] || mkdir newdir |
如果你想给自己的错误消息:
1 | [ -d newdir ] && echo"Directory Exists" || mkdir newdir |
真想和老
1 | mkdir /tmp/qq >/dev/null 2>&1 |
将你想要的没一个有带有竞有其他的解决方案。
有时,简》(与ugliest)解决方案是最佳的。
即使
例子:
1 | mkdir -p foo |
这将创建一个目录——"foo"如果它不存在。的:)
1 2 3 4 5 6 7 8 | directory_name ="foo" if [ -d $directory_name ] then echo"Directory already exists" else mkdir $directory_name fi |
系统不支持P +交换了在线的Windows 8系统。
你可以使用这个。
1 | IF NOT EXIST dir_name MKDIR dir_name |
或如果你想检查它的存在:第一
1 2 3 | if [[ ! -e /path/to/newdir ]]; then mkdir /path/to/newdir fi |
这是测试的存在和Korn外壳。
你也可以尝试在Korn shell googling手册。
所以,如果你可以使用循环或不存在,如果CT检查目录,如果它不存在时创建目录。
1)DIR dir name = /家庭/ _
1 2 3 4 5 6 | if [ ! -d $dir ] then mkdir $dir else echo"Directory exists" fi |
你可以使用2)与P -目录mkdir创建目录的选项。它会检查,如果是一个目录,它将不可用。
1 | mkdir -p $dir |
也能够到P - mkdir创建目录树的结构。如果你想创建目录的父和儿童使用相同的命令,可以选择:P
1 | mkdir -p /home/parent_dir /home/parent_dir/child1 /home/parent_dir/child2 |
对人referring -
1 2 | -p, --parents no error if existing, make parent directories as needed |
这将创建一个目录中的所有给定的路径,如果存在,否则它抛出的错误,从左到右的所有目录扩展在给定的路径。试试下面的命令。该目录是不是存在
正确的用法
你可以自动执行命令后的国有企业和
1 | mkdir -p sam |
- 为使目录mkdir
- P=————父母
- (如果存在误差,使所需的父目录)
这是一个简单的函数(Bash)让你创建一个目录,如果它是不是存在。
1 2 3 4 5 6 7 8 9 | #---------------------------------- # Create a directory if it doesn't exist #------------------------------------ createDirectory() { if [ ! -d $1 ] then mkdir -p $1 fi } |
你可以调用上述函数:
createDirectory /tmp/fooDir/BarDir
上述bardir foodir和扩展,如果他们不存在。注意选项中的"P"命令mkdir创建目录recursively它。希望这帮助。