怎样才可以有以下命令BASH重定向创建文件夹
echo "something" > "$f"
其中$f
将会像folder/file.txt
创建文件夹folder
如果不存在?
如果我不能这样做,我该如何让脚本将目录'a'中的所有文件夹(无内容)复制到目录'b'?
例如,如果我有
A/F1/
A/F2/
A/F3/
我想有
B/F1/
B/F2/
b/F3/
怎样才可以有以下命令BASH重定向创建文件夹
echo "something" > "$f"
其中$f
将会像folder/file.txt
创建文件夹folder
如果不存在?
如果我不能这样做,我该如何让脚本将目录'a'中的所有文件夹(无内容)复制到目录'b'?
例如,如果我有
A/F1/
A/F2/
A/F3/
我想有
B/F1/
B/F2/
b/F3/
其他的答案在这里使用的是外部命令“目录名”。这可以在不调用外部工具的情况下完成。
mkdir -p "${f%/*}"
你也可以检查,如果该目录已经存在,但是这不是真的的mkdir -p要求:
mydir="${f%/*}"
[[ -d $mydir ]] || mkdir -p "$mydir"
尝试
mkdir -p `dirname $f` && echo "something" > $f
您可以使用mkdir -p
写入文件之前创建的文件夹:
mkdir -p "$(dirname $f)"
echo "something" | install -D /dev/stdin $f
谢谢你的提示,但正确的语法实际上是'$ { f%/ *}' – baruch
我已经更新了答案。对不起,我已经给了'basename',而不是'dirname'。 – jordanm