2014-10-28 51 views
0

循環我有一個目錄列表上市的目錄爲變量,然後每個目錄裏面的bash

/這/是/我的/路徑/ *(DIR1,DIR2,DIR3等)

內的這些目錄中的每一個都有多個文件。這些文件的各個名稱被放入一個.xml文檔中。截至目前,我從每個目錄內調用我的腳本,然後手動替換目錄名稱代替DIRECTORY,它位於打印的.xml中的某些區域。

這是我用來插入文件名的腳本。

for i in *.zip ; do 
    i="${i%.*}" 
    echo "$i"; 

echo "  <description> 
     <name>$i</name> 
     <file>this/is/my/path/DIRECTORY/$i.zip</file> 
     <partner>/this/is/another/path/DIRECTORY/$i.png</partner> 
     </description>">>DIRECTORY-list.xml 

done 

我知道我可以使用列出目錄名稱:

dir=/this/is/my/path/* 
for dirs in $dir 
do 
    echo `basename $dirs` 

但很明顯,只有列出的目錄。我需要將目錄的名稱放在變量($ dir1,$ dir2,$ dir3等)中,然後在第一個腳本中運行某種循環,然後將整個循環的最終產品放入一個巨型.xml文件。

需要考慮的事項: - 文件名和目錄名可能包含或不包含空格。

我希望問題措辭好。謝謝!

+0

棒在外環和前綴的文件循環'* .zip'用'「$目錄」'的循環。 – 2014-10-28 22:59:43

回答

0

環通迪爾斯,每個目錄,環通公司文件:

for dir in /this/is/my/path/*; do 
    for i in $dir/*; do 
     echo "$i"; 

     echo "  <description> 
    <name>$i</name> 
    <file>this/is/my/path/$dir/$i.zip</file> 
    <partner>/this/is/another/path/$dir/$i.png</partner> 
    </description>" >> $dir-list.xml 

    done 
done 
+0

哇......夠簡單的。只需要注意,我在echo「$ i」;'上面添加了三行新行。 'dir =「$ {dir ## * /}」''和'i =「$ {i ## * /}」''和'i =「$ {i%。*}」'...只是爲了取出所有文件路徑和擴展名,而不必使用'basename'。謝謝! – GHO5TLIKE5WAYZE 2014-10-29 18:36:39

相關問題