首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Linux查找、转换和复制命令组合成一个命令

如何将Linux查找、转换和复制命令组合成一个命令
EN

Stack Overflow用户
提问于 2020-04-20 21:54:45
回答 2查看 369关注 0票数 0

我有以下cmd,它以文件名中的STP模式获取所有.pdf文件,并将它们放在文件夹中:

代码语言:javascript
复制
find /home/OurFiles/Images/ -name '*.pdf' |grep "STP*" | xargs cp -t /home/OurFiles/ImageConvert/STP/

我有另一个cmd,它将pdf转换成jpg。

代码语言:javascript
复制
find /home/OurFiles/ImageConvert/STP/ -type f -name '*.pdf' -print0 |
  while IFS= read -r -d '' file
    do convert -verbose -density 500 -resize 800 "${file}" "${file%.*}.jpg"

    done

是否有可能将这些命令合并成一个命令?此外,如果可能的话,我希望在单个命令中的转换图像文件名上预装一个前缀。示例: STP_OCTOBER.jpg到MSP_OCTOBER.jpg。任何反馈都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-21 00:01:27

代码语言:javascript
复制
find /home/OurFiles/Images/ -type f -name '*STP*.pdf' -exec sh -c '
  destination=$1; shift        # get the first argument
  for file do                  # loop over the remaining arguments
    fname=${file##*/}          # get the filename part
    cp "$file" "$destination" && 
      convert -verbose -density 500 -resize 800 "$destination/$fname" "$destination/MSP-${fname%pdf}jpg"
  done
' sh /home/OurFiles/ImageConvert/STP {} +

您可以将目标目录和找到的所有PDF传递给find-exec选项,以执行一个小脚本。

脚本移除第一个参数,并将其保存到变量destination中,然后遍历给定的PDF路径。对于每个文件路径,提取文件名,将文件复制到目标目录,如果复制操作成功,则运行convert命令。

票数 1
EN

Stack Overflow用户

发布于 2020-04-20 23:03:09

也许是这样:

代码语言:javascript
复制
find /home/OurFiles/Images -type f -name 'STP*.pdf' -print0 |
  while IFS= read -r -d '' file; do
      destfile="/home/OurFiles/ImageConvert/STP/MSP-$(basename "$file" .pdf).jpg"
      convert -verbose -density 500 -resize 800 "$file" "$destfile"
  done

与两个单独的命令相比,这个合并命令中唯一真正新的东西是使用basename(1)从文件名中删除目录和扩展名,以便创建输出文件名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61332678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档