2012-01-26 166 views
11

怎樣纔可以有以下命令BASH重定向創建文件夾

echo "something" > "$f" 

其中$f將會像folder/file.txt創建文件夾folder如果不存在?

如果我不能這樣做,我該如何讓腳本將目錄'a'中的所有文件夾(無內容)複製到目錄'b'?

例如,如果我有

A/F1/
A/F2/
A/F3/

我想有

B/F1/
B/F2/
b/F3/

回答

11

其他的答案在這裏使用的是外部命令「目錄名」。這可以在不調用外部工具的情況下完成。

mkdir -p "${f%/*}" 

你也可以檢查,如果該目錄已經存在,但是這不是真的的mkdir -p要求:

mydir="${f%/*}" 
[[ -d $mydir ]] || mkdir -p "$mydir" 
+0

謝謝你的提示,但正確的語法實際上是'$ { f%/ *}' – baruch

+0

我已經更新了答案。對不起,我已經給了'basename',而不是'dirname'。 – jordanm

5

嘗試

mkdir -p `dirname $f` && echo "something" > $f 
1

您可以使用mkdir -p寫入文件之前創建的文件夾:

mkdir -p "$(dirname $f)" 
0
echo "something" | install -D /dev/stdin $f 
相關問題