通过linux shell查找大于x像素的png图像

当你试图改变网站的设计时,你必须关注文章内容中图片的宽度。我写的大部分文章都有众所周知的大屏幕截图,所以如果我想增加侧边栏,关键是要弄清楚哪些图片太宽而不能适应新的设计。...

当你试图改变网站的设计时,你必须关注文章内容中图片的宽度。我写的大部分文章都有众所周知的大屏幕截图,所以如果我想增加侧边栏,关键是要弄清楚哪些图片太宽而不能适应新的设计。

因为我是一个程序员,所以编写一个小型应用程序来实现这一点对我来说很容易,但这让我开始思考……为什么我不能在Linux命令行上实现这一点?

我首先想到的是PNG图像在运行“file”命令时会显示大小数据:

$ file image3.png image3.png: PNG image data, 613 x 657, 8-bit/color RGBA, non-interlaced

非常有用,因为99%的图片在这个网站上是PNG格式。因此,现在对我上传目录中的所有文件进行循环:

$ for f in *.png;do file $f;done

image.png: PNG image data, 631 x 185, 8-bit/color RGBA, non-interlaced image1.png: PNG image data, 631 x 96, 8-bit/color RGBA, non-interlaced image10.png: PNG image data, 375 x 395, 8-bit/color RGBA, non-interlaced image11.png: PNG image data, 484 x 241, 8-bit/color RGBA, non-interlaced —snipped—

这更有用,但我必须将数据拉入Excel或类似的应用程序才能对数据进行排序,因此我决定使用linux的“cut”命令来拉出width列。

您会注意到-f5参数告诉cut使用第五列,而-d\则在它告诉cut使用空格作为分隔符之后加上一个空格。斜杠\字符是转义字符,用于告诉shell将空格用作字符,而不是空白。

$ for f in *.png;do file $f|cut -f5 -d\ ;done

631 631 375 484 —snipped—

不是完全有用的输出,是吗?让我们通过bash-if语句来推动这个过程,然后仅在宽度大于600像素时显示file命令的输出。

注意“file$f | cut…”部分周围的`(backtick)标记,它表示`中的命令将作为单个输出处理并输入if语句,在这里我们使用-gt(大于)。另外请注意,在方括号[]的两侧需要空格

for f in *.png;do if [ `file $f | cut -f5 -d\ ` -gt 600 ] ; then file $f;fi;done

image.png: PNG image data, 631 x 185, 8-bit/color RGBA, non-interlaced image1.png: PNG image data, 631 x 96, 8-bit/color RGBA, non-interlaced image17.png: PNG image data, 638 x 340, 8-bit/color RGBA, non-interlaced image18.png: PNG image data, 608 x 448, 8-bit/color RGBA, non-interlaced —snipped—

现在我们有一个列表,列出了所有超过600像素宽的文件。如果需要复制或移动文件名,可以在末尾调整“file$f”,只需将文件名回送出去:

for f in *.png;do if [ `file $f | cut -f5 -d\ ` -gt 600 ] ; then echo $f;fi;done

image.png image1.png image17.png image18.png —snipped—

Linux shell的功能非常强大!这个解决方案并不是对每个人都实用,但是知道如何使用shell是很好的,这样您就可以在需要时完成这类任务。

  • 发表于 2021-04-14 11:24
  • 阅读 ( 173 )
  • 分类:互联网

你可能感兴趣的文章

3个免费的方法来创建一个零努力快速标志

...你完成你的标志,你可以下载一个低分辨率的PNG在400 x 400像素。如果你想要一个高分辨率5000 x 5000像素的版本,你需要成为Squarespace的会员或者支付10美元。 ...

  • 发布于 2021-03-13 10:33
  • 阅读 ( 211 )

软呢帽25已经到了:这里有什么变化

...者,需要单独的软件(比如Compiz)来进行合成。Wayland还通过隔离应用程序窗口提供了安全改进。这种沙盒在概念上与我们在智能**和网络浏览器上看到的类似。 ...

  • 发布于 2021-03-16 13:23
  • 阅读 ( 287 )

如何在linux终端上操作图像

... 下面介绍如何使用Linux convert工具,它允许您通过命令行对终端执行所有这些操作,以及更多操作。 ...

  • 发布于 2021-03-27 05:34
  • 阅读 ( 209 )

如何使用受限shell来限制linux用户可以做什么

...mkdir创建目标目录以及它需要创建的任何父目录。因此,通过创建“/home/minnie/bin”目录,我们可以同时创建“/home/minnie”目录。 sudo useradd minnie -s /bin/rbash sudo passwd minnie sudo mkdir -p /home/minnie/bin 当敏妮登录时,她将在一个受限的...

  • 发布于 2021-03-31 10:57
  • 阅读 ( 384 )

如何使用tesseract从linux命令行执行ocr

...学字符识别 光学字符识别(OCR)是一种在图像中观察和查找单词,然后将其提取为可编辑文本的能力。对于人类来说,这项简单的任务对于计算机来说是非常困难的。至少可以说,早期的努力是笨拙的。如果字体或大小不符合OC...

  • 发布于 2021-04-01 21:39
  • 阅读 ( 309 )

如何在linux上使用fd命令

...x的搜索命令 安装fd 由于ubuntu19.04(Disco Dingo,),您可以通过使用apt get调用官方维护的包来直接安装fd。如果您运行的是较旧版本的Ubuntu,请查看Git hub页面上的安装说明。 键入以下内容: sudo apt-get install fd-find 在Ubuntu中,命令...

  • 发布于 2021-04-01 21:52
  • 阅读 ( 166 )

如何在linux上的bash中设置环境变量

...时查看所有环境变量,请键入printenv。有很多输出,所以通过管道将其排序,然后将其转换为更少的输出是有意义的: printenv | sort | less 环境变量的排序列表以较少的格式显示。 我们可以通过grep管道输出与特定主题相关的环境...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 218 )

如何在linux上使用xargs命令

...nix操作系统的一个重要特性是能够将一个命令的stdout输出通过管道传输到第二个命令的stdin输入。第一个命令不关心它的输出是否没有发送到终端窗口,第二个命令不关心它的输入是否来自键盘。 尽管所有的Linux命令都有三个标...

  • 发布于 2021-04-03 07:25
  • 阅读 ( 161 )

如何在macos mojave上创建自己的快速操作

... Script操作,并将选定的图像提供给ImageMagick命令,您可以通过自制程序安装该命令。当然,您可以使用runashellscript操作来执行任何您只需编写Shell脚本的操作。 如果你想用一个快速的动作来做一些事情,只要看看如何用自动机。...

  • 发布于 2021-04-05 06:16
  • 阅读 ( 151 )

如何从linux终端快速调整、转换和修改图像

...图像大小。以下命令要求ImageMagick将图像的宽度调整为200像素,高度调整为100像素: convert example.png -resize 200x100 example.png 我们在这里使用了相同的文件名,因此ImageMagick将覆盖原始文件。 如果使用此命令,ImageMagick将尝试保留纵...

  • 发布于 2021-04-10 05:35
  • 阅读 ( 159 )
jxdfrnb
jxdfrnb

0 篇文章

相关推荐