给定一个可以存在或不存在的文件路径,如何在bash脚本中创建文件夹结构和文件?
运行我的脚本的示例(脚本名称和文件路径作为参数传递):
./someTask.sh /folder/structure/file.html
我试过 mkdir 但它也创建了一个名为 file.html 的文件夹。任何帮助将非常感激。
只是做(不太花哨)但很简单:
crfile() {
dir=$(dirname "$1")
mkdir -p "$dir" && touch "$1"
}
while read -r path; do
crfile "$path"
done << EOF
some.txt
./some.txt
../some.txt
.././some.txt
../other/some.txt
/some.txt
/sub/some.txt
/sub/../etc/some.txt
EOF
或者如果你需要缩短
crfile() { mkdir -p "$(dirname "$1")" && touch "$1"; }
来自man mkdir
:
-p 根据需要创建中间目录。如果未指定此选项,则每个操作数的完整路径前缀必须已存在。另一方面,指定此选项后,如果作为操作数给出的目录已经存在,则不会报告错误。中间目录是使用由当前 umask 修改的 rwxrwxrwx (0777) 权限位创建的,加上所有者的写入和搜索权限。
使用dirname
参数替换尝试破坏路径要好得多。阅读更多Bash 变量替换 vs dirname 和 basename
是的,--
如果需要,请添加- 如果您希望文件或目录以-
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句