Намиране на PNG изображения По-големи от х пиксели чрез Linux Shell
Когато се опитвате да работите по промяната на дизайна на уебсайта си, трябва да сте загрижени за ширината на снимките във вашата статия. Имам известни големи екрани на повечето статии, които съм написал, така че ако искам да увелича страничната лента, е от решаващо значение да разбера кои снимки ще бъдат прекалено широки, за да се поберат в новия дизайн..
Тъй като аз съм програмист, би било лесно за мен да напиша малка молба, за да направя това, но това ме накара да започна да мисля… защо не мога да направя това в командния ред на Linux.?
Първото нещо, което разбрах беше, че PNG изображенията показват данните за размера, когато стартирате командата „file“ на тях:
$ file image3.png
image3.png: PNG данни с изображения, 613 x 657, 8-битов / цветен RGBA, без редове
Много полезно, тъй като 99% от картината на този сайт е във формат PNG. Сега, за да го хвърлим в цикъл за всички файлове в моя директория за качване:
$ за f в * .png; изпълнете файла $ f;
image.png: PNG данни с изображения, 631 x 185, 8-битов / цветен RGBA, без преплетени
image1.png: PNG данни с изображения, 631 x 96, 8-битов / цветен RGBA, без редове
image10.png: PNG изображение, 375 x 395, 8-битов / цветен RGBA, без редове
image11.png: PNG данни за изображения, 484 x 241, 8-битов / цветен RGBA, без редове
-клъцна-
Това е по-полезно, но ще трябва да изтегля данните в Excel или подобно приложение, за да сортирам данните, така че реших да използвам командата linux “cut”, за да извадя само колоната с ширината..
Ще забележите, че параметърът -f5 указва нарязания да вземе петата колона, а -d с интервал, след като разкрие, за да се използва интервал като ограничител. Наклонената черта е символ за бягство, за да укаже на черупката да използва пространството като символ, а не като празно пространство.
$ за f в * .png, направете файла $ f | cut -f5 -d \ t
631
631
375
484
-клъцна-
Не е изцяло полезна продукция, нали? Нека да го накараме чрез bash if оператор и след това само да покажем изхода на файловата команда, когато ширината е по-голяма от 600 пиксела.
Обърнете внимание на маркировките "(backtick) около" $ $ f " cut… ”, които показват, че командите вътре в 'ще се обработват като един изход и се въвеждат в оператора if, където използваме -gt (по-голямо от). Също така имайте предвид, че имате нужда от пространства около двете страни на скобите []
за f в * .png; направете ако ['file $ f | -f5 -d -gt 600]; след това файл $ f; fi;
image.png: PNG данни с изображения, 631 x 185, 8-битов / цветен RGBA, без преплетени
image1.png: PNG данни с изображения, 631 x 96, 8-битов / цветен RGBA, без редове
image17.png: PNG данни с изображения, 638 x 340, 8-битов / цветен RGBA, без редове
image18.png: PNG данни с изображения, 608 x 448, 8-битов / цветен RGBA, без редове
-клъцна-
Сега имаме списък с всички файлове с ширина над 600 пиксела. Можете да настроите „file $ f“ накрая, за да ехомерите имената на файловете, ако трябва да ги копирате или преместите някъде другаде:
за f в * .png; направете ако ['file $ f | -f5 -d -gt 600]; след това echo $ f; fi;
image.png
image1.png
image17.png
image18.png
-клъцна-
Linux обвивката е невероятно мощна! Това решение не е много практично за всички, но е добре да знаете как да работите с черупката, така че можете да постигнете този тип задачи, когато трябва.