如何使用 xargs 替换 2 个参数

Sta*_*Kay 6 bash shell sh

我想编写一个脚本来使用svgexport cli将目录中的 svg 文件转换为 png

svgexport input.svg input.jpg
Run Code Online (Sandbox Code Playgroud)

如何使用 find 和 xargs -I {} 使用以下命令查找和打印 svg 文件:

find . -iname -0 "*.svg" | xargs -I {} svgexport {} ???
Run Code Online (Sandbox Code Playgroud)

如何通过使用第一个参数并将 .svg 替换为 .jpg 来填充第二个参数?

anu*_*ava 6

您可以使用bash -cinxargs并使用 BASH 的字符串替换:

find . -name "*.svg" -print0 |
xargs -0 -I {} bash -c 'svgexport "$1" "${1%.svg}.jpg"' - {}
Run Code Online (Sandbox Code Playgroud)


red*_*neb 4

我认为最好用循环来做到这一点while

find . -iname "*.svg" -print0 |
    while IFS= read -r -d '' file; do
        svgexport "$file" "${file%.svg}.jpg"
    done
Run Code Online (Sandbox Code Playgroud)