shell 在docx文件所在位置查找没有pdf扩展名文件对这些文件运行'lowriter --headless --convert-to pdf'

mcdcgff0  于 2022-12-19  发布在  Shell
关注(0)|答案(2)|浏览(123)

只是想知道是否有一个更简单,更短,更好的命令比下面:

文件

123.pdf  
123.docx  
456.docx   <= Run 'lowriter --headless --convert-to pdf' against this file 
789.docx
789.pdf
'another file.docx' <= Run 'lowriter --headless --convert-to pdf' against this file

此命令仅适用于不带空格的文件:

ls *.docx | perl -nle '
  s/\.docx$/.pdf/; 
  print unless -e 
' | sed 's/\.pdf/\.docx/' | while read line ; do
  lowriter --headless --convert-to pdf $line ;
done

我的文件名没有空格,所以这个命令对我有效。但也许其他人需要它来处理有空格的文件名

aydmsdu9

aydmsdu91#

评论总结:

parallel '[ -f {.}.pdf ] || lowriter --headless --convert-to pdf {}' ::: *.docx
ijnw1ujt

ijnw1ujt2#

命令仅适用于没有空格的文件
你能试着在最后一个$line周围加上引号吗?就像这个.... --convert-to pdf "$line"
作为一种替代方法,您可以像这样在Perl中执行所有操作:

for my $file (<*.docx>) {
    my $basename = $file =~ s/\.docx$//r;
    my $pdf_file = "${basename}.pdf";
    if (!-e $pdf_file) {
        system 'lowriter', '--headless', '--convert-to', 'pdf', $file;
    }
}

相关问题