遍历子目录,cd 进入子目录,然后处理文件
Loop through subdirectories, cd into the subdirectory, then process the files
我有一个脚本可以使用 inkscape 将 SVG 文件转换为 PNG。但是,转换后的文件放在脚本所在的顶级目录下。我想把转换后的文件放到它的子目录下。
顶级目录如下所示:
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 {}' \;
这是更新后的 svg2png.sh,由 @anishsane 提供:
#/bin/sh
find . -name \*.svg -execdir sh -c 'inkscape -z -e $(basename {} .svg).png {}' \;
将其添加为答案。这应该可以帮助您:
find . -name \*.svg -execdir sh -c 'inkscape -z -e $(basename {} .svg).png {}' \;
我有一个脚本可以使用 inkscape 将 SVG 文件转换为 PNG。但是,转换后的文件放在脚本所在的顶级目录下。我想把转换后的文件放到它的子目录下。
顶级目录如下所示:
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 {}' \;
这是更新后的 svg2png.sh,由 @anishsane 提供:
#/bin/sh
find . -name \*.svg -execdir sh -c 'inkscape -z -e $(basename {} .svg).png {}' \;
将其添加为答案。这应该可以帮助您:
find . -name \*.svg -execdir sh -c 'inkscape -z -e $(basename {} .svg).png {}' \;