BASH重定向创建文件夹

Bar*_*uch 19 bash

我怎样才能拥有以下命令

echo "something" > "$f"
Run Code Online (Sandbox Code Playgroud)

如果不存在,$f将在哪里folder/file.txt创建文件夹folder

如果我不能这样做,我怎么能让脚本将目录'a'中的所有文件夹(没有内容)复制到目录'b'?

例如,如果我有

a/f1/
a/f2/
a/f3 /

我希望有

b/f1/
b/f2/
b/f3 /

jor*_*anm 18

这里的其他答案是使用外部命令"dirname".这可以在不调用外部实用程序的情况下完成.

mkdir -p "${f%/*}"
Run Code Online (Sandbox Code Playgroud)

您还可以检查目录是否已存在,但mkdir -p并不真正需要:

mydir="${f%/*}"
[[ -d $mydir ]] || mkdir -p "$mydir"
Run Code Online (Sandbox Code Playgroud)

  • `${f%/*}` 中的所有额外符号是什么? (2认同)

sho*_*one 11

echo "something" | install -D /dev/stdin $f
Run Code Online (Sandbox Code Playgroud)

  • +1表示简洁的解决方案。然而,只需几句话的解释就能得到更好的答案。 (2认同)

Ale*_*man 6

尝试

mkdir -p `dirname $f` && echo "something" > $f
Run Code Online (Sandbox Code Playgroud)