2016-11-13 93 views
-1

假設我在一個目錄dir1中。在那個目錄中我有myscript.sh和一個目錄subdir1。 subdir1有幾個子目錄,subsub1,subsub2,subsub3。在每個subsub目錄中都有一個名爲script2.sh的bash腳本,我想運行它們中的每一個。如何遍歷bash腳本中的子目錄?

首先,我只想確保我可以打印所有subsub目錄。 我:

for dir in /subdir1/*/ ; do 
     echo $dir 
    done 

誰能告訴我什麼,我做錯了什麼?

+0

你可能想'男人bash'並搜索「globstar」,以及'人find'。另外,請閱讀關於創建[MCVE](http://stackoverflow.com/help/mcve)的信息。對於這個問題,一個很好的方法是包含用於生成腳本摘錄失敗的測試環境的命令。就目前來看,這裏還遠遠不夠調試你的代碼。 – ghoti

回答

0

如果任何目錄的名稱中有空格或其他特殊字符,您將遇到問題。

根據您所提供什麼

for scriptfile in ./subdir/*/*script2.sh 
do 
/bin/sh $scriptfile 
done 

可能最適合您。

要處理目錄名稱中的空格或其他特殊字符,您需要使用find並將輸出傳遞給xargs。

+0

這給了我一個沒有這樣的文件或目錄消息。 –

+0

@HanBrolo - 這就是爲什麼你需要提供一個可重複的例子來證明你遇到的問題。這個答案可能很有效,如果沒有,那是因爲你沒有告訴我們。 – ghoti

1

我想你可以運行它們是這樣的:

find subdir1 -type f -name "NAME_OF_YOUR_SCRIPT.sh" -exec {} \;