2015-12-14 94 views
2

我有一個使用inkscape將SVG文件轉換爲PNG的腳本。但是,轉換後的文件放置在腳本所在的頂層目錄中。我想將轉換後的文件放在它的子目錄中。循環遍歷子目錄,cd到子目錄中,然後處理文件

頂級目錄如下:

folderA 
|---file1.svg 
|---file2.svg 
|---file3.svg 
folderB 
|---file4.svg 
|---file5.svg 
|---file6.svg 
svg2png.sh 

腳本運行之後,我想PNG文件位於其子目錄是這樣的:

folderA 
|---file1.svg 
|---file1.png 
|---file2.svg 
|---file2.png 
|---file3.svg 
|---file3.png 
folderB 
|---file4.svg 
|---file4.png 
|---file5.svg 
|---file5.png 
|---file6.svg 
|---file6.png 
svg2png.sh 

不喜歡這樣的:

file1.png 
file2.png 
file3.png 
file4.png 
file5.png 
file6.png 
folderA 
|---file1.svg 
|---file2.svg 
|---file3.svg 
folderB 
|---file4.svg 
|---file5.svg 
|---file6.svg 
svg2png.sh 

這裏是svg2png.sh

#/bin/sh 
find . -name \*.svg -exec sh -c 'inkscape -z -e $(basename {} .svg).png {}' \; 

這是由@ anishsane提供的最新svg2png.sh:

#/bin/sh 
find . -name \*.svg -execdir sh -c 'inkscape -z -e $(basename {} .svg).png {}' \; 
+2

檢查'-execdir'選項到'find' – anishsane

+0

這是有效的。謝謝@anishsane。 –

回答

1

將其作爲答案。這應該對你有所幫助:

find . -name \*.svg -execdir sh -c 'inkscape -z -e $(basename {} .svg).png {}' \; 
相關問題