use*_*ser 4 shell pipe wildcards control-flow
我有一个装满文件的文件夹,其.dot
扩展名如下:
a.dot
b.dot
c.dot
Run Code Online (Sandbox Code Playgroud)
我想浏览此文件夹中的所有文件,并对它们运行如下命令:
dot -Tpdf a.dot -o a.pdf
dot -Tpdf b.dot -o b.pdf
dot -Tpdf c.dot -o c.pdf
Run Code Online (Sandbox Code Playgroud)
我猜我需要使用垂直条并执行如下命令:
ls *.dot | dot -Tpdf ... -o ....pdf
Run Code Online (Sandbox Code Playgroud)
但我不知道如何让管道只将每个文件放在中间部分。我应该使用xargs
吗?此外,如何剥离扩展然后也将其放置在第二部分上。如果我至少可以指出正确的方向(使用哪个 shell 命令),它将帮助我在解决这个问题的过程中走得更远。
用
for i in *.dat ; do dot -Tpdf "$i" -o "$(basename "$i" dot)pdf" ; done
Run Code Online (Sandbox Code Playgroud)
编辑: 正确处理带有空格的文件名。