我想创建一个看起来像/dir1/dir2/dir3/dir4
但我不能的新目录。
如果我从父目录和新父目录一一创建目录,一切正常:
lm@debian:~$ sudo mkdir -v ./Pictures/Photos1/onbike2023/
mkdir: cannot create directory ‘./Pictures/Photos1/onbike2023/’: No such file or directory
lm@debian:~$ sudo mkdir -v ./Pictures/Photos1/
mkdir: created directory './Pictures/Photos1/'
lm@debian:~$ sudo mkdir -v ./Pictures/Photos1/onbike2023/
mkdir: created directory './Pictures/Photos1/onbike2023/'
lm@debian:~$
我究竟做错了什么?
答案1
mkdir
默认情况下不会创建中间目录。也就是说,如果你想mkdir foo/bar/baz
成功,foo
最好foo/bar
已经存在。
但是,您可以通过更改此行为mkdir -p foo/bar/baz
。如果需要,此选项将导致创建任何中间目录。它还有一个额外的好处,即mkdir
如果错误代码foo/bar/baz
已经存在,则不会导致退出。
答案2
提取自man mkdir
-p, --parents
no error if existing, make parent directories as needed, with their file modes unaffected by
any -m option.