2012-09-27 39 views
2

我有一個包含多個文件夾的目錄。 我想創建一個bash腳本來在不同的位置創建具有相同名稱的目錄。bash - 對於文件夾中的每個目錄,在不同位置創建一個目錄

請注意,我不想複製文件夾結構,既不復制也不移動文件夾。我只想在不同的位置創建具有相同名稱的文件夾。

我被卡住了。使用此:

for d in "template/modules/*" 
do 
    # mkdir $(basename "$d"); 
    echo $d; 
    echo "$d"; 
    echo $(basename "$d"); 
done 

輸出:

template/modules/introduction template/modules/kitchen template/modules/test 
template/modules/* 
add_module.sh template 

任何想法?

乾杯

+3

雙引號中的'*'不會被擴展。嘗試''模板/模塊/「*'代替。 –

回答

4

你需要把星號引號外:

for d in "template/modules/"* 

I第一個echo$dexpanded,但是當你引用它時,它不是。

+0

看得很清楚!問題修復了! – RafaelGP

+1

您可能也想贊同@XièJìléi的評論;它發佈在我的回覆之前:) – l0b0

1

試試這個:

for d in "template/modules/*" 
do 
    mkdir $(basename "$d") 
done 
+0

它不起作用。它創建一個名爲'basename template'的文件夾,並在其中創建一個名爲'modules'的文件夾,並在其中創建一個名爲'。'的文件夾。 – RafaelGP

+0

@RafaelGP看到更新後的版本,你必須把''與'' – turtledove

+0

混淆我已經使用你的代碼更新了我的問題,它的輸出是... – RafaelGP

1

要複製的目錄結構,你可以這樣做:

$ cd template/modules 
$ find . -type d -maxdepth 1 -exec mkdir -p ../../{} \; 
+0

我並不需要複製整個文件夾結構。我只需要創建與當前目錄中的modules /目錄相同的文件夾... – RafaelGP

+0

在find命令中使用'-maxdepth 1'。我已經更新了我的答案。 – dogbane

相關問題