Ваш Mail
Mail Команда ожидает, что его сообщение будет на stdin, и поэтому читает остаток выхода, сгенерированного вашим ... AWK
Отказ
Если вы действительно не хотите, чтобы тело сообщения в вашем почте, просто труба stdin из / dev / null
:
mail -s "Critical Warning: Filesystem $part is at $usage% of capacity." $USER </dev/null
Не проверено, в качестве отправной точки вы можете адаптировать:
for pic in *.jpeg *.bmp *.png; do
serial="${pic%.*}"
if test -r "${serial#photo-}"; then
tags=`sed -n 's/.*<meta name="keywords" content="\([^"]*\)".*/\1/p' "${serial#photo-}"`
# do what you want with "$pic" using "$tags"
fi
done
Итак, вы перебираете все файлы изображений, проверяете, может прочитать файл с удаленными префиксом и расширением, а затем вырезать теги из файла метаданных. Я не уверен, какой инструмент вы собираетесь использовать для редактирования метаданных изображений.
Перед обработкой всех ваших файлов лучше установить нужное поле с помощью вашего любимого графического инструмента. Затем проанализируйте файл с помощью exiftool :
.exiftool -XMP:all -IPTC:all test.jpg
Будет напечатано точное имя поля. После этого вы можете пакетно обрабатывать все файлы. Например, чтобы установить XMP:description
, введите:
exiftool -XMP:description="the" test.jpg
Альтернативой являются инструменты identify
и convert
из пакета ImageMagick.
Для извлечения из html я рекомендую пакет perl HTML -Дерево
Дан файл test.html
со следующим содержимым:
<html><head>
<meta name="keywords" content="tag1, tag2, tag3, etc" />
</head>
<body></body>
запустите этот perl-скрипт для извлечения тегов:
use HTML::TreeBuilder 5 -weak; # Ensure weak references in use
my $tree = HTML::TreeBuilder->new; # empty tree
$tree->parse_file("test.html");
my $meta = $tree->look_down(
_tag => "meta",
name => "keywords"
);
print $meta->attr("content");