2012-10-22 173 views
2

我是新來的編碼bash。Bash - 如何遍歷子目錄並複製到文件中

我試圖創建一個將循環所有子目錄的東西,並在每個應該將文件複製到該目錄。

因此,舉例來說,如果我有以下目錄

/dir1/ 
/dir2/ 
/dir3/ 
... 
... 
/dirX/ 

和文件fileToCopy.txt

然後我想運行的東西,這將打開每一個/dirX文件,並在該目錄中放fileToCopy.txt。離開我:

/dir1/fileToCopy.txt 
/dir2/fileToCopy.txt 
/dir3/fileToCopy.txt 
... 
... 
/dirX/fileToCopy.txt 

我想這樣做在一個循環中,因爲那麼我會嘗試修改這個循環,多增加一些步驟,最終.txt文件實際上是一個.java文件,我想將它複製到每個目錄中,編譯它(與其中的其他類一起),然後運行它來收集輸出。

謝謝。

回答

6
for i in dir1, dir2, dir3, .., dirN 
    do 
     cp /home/user1068470/fileToCopy.txt $i 
    done 

或者,您可以使用下面的代碼。

for i in * 
    do     # Line breaks are important 
     if [ -d $i ] # Spaces are important 
      then 
       cp fileToCopy.txt $i 
     fi 
    done 
+0

你好,對於這種方法,我需要知道的所有子目錄的名稱是什麼?我希望可以這麼說: 遍歷我現在所在的所有子目錄 複製文件 完成 或者這是實際上正在做什麼?謝謝! – ThePerson

+0

請參閱我答案的第二部分。 – asenovm

+1

一些小的東西:空格和引號,即'[-d「$ i」]'和'cp fileToCopy.txt「$ i」' – doubleDown

6

查找當前目錄下的所有目錄和文件將複製到他們(。):

find . -type d -exec cp fileToCopy.txt '{}' \; 
+0

嗨,謝謝你的幫忙。這確實有效,但我希望能夠在循環中添加一些額外的步驟。 – ThePerson

+0

'發現。 -type d -name「dir?」 -exec cp fileToCopy.txt'{}'\;' – Vijay

+0

@sarathi,不要以爲你需要'-name「dir?」',因爲OP在所有子目錄中循環 – doubleDown

相關問題