我有以下cmd,它以文件名中的STP模式获取所有.pdf文件,并将它们放在文件夹中:
find /home/OurFiles/Images/ -name '*.pdf' |grep "STP*" | xargs cp -t /home/OurFiles/ImageConvert/STP/我有另一个cmd,它将pdf转换成jpg。
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。任何反馈都是非常感谢的。
发布于 2020-04-21 00:01:27
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命令。
发布于 2020-04-20 23:03:09
也许是这样:
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)从文件名中删除目录和扩展名,以便创建输出文件名。
https://stackoverflow.com/questions/61332678
复制相似问题