BitMeter OS - это монитор с открытым исходным кодом с функциями, подобными Networx. Он имеет веб-интерфейс и интерфейс командной строки. Он также имеет экспериментальный клиент для настольных компьютеров. Пакеты «.deb» можно загрузить с http://codebox.org.uk/pages/bitmeteros/downloads и установить с помощью установщика пакетов gdebi или из командной строки с использованием (64-разрядной версии)
$ sudo dpkg -i bitmeteros_0.7.6-amd64.deb
Для получения дополнительной информации о приложении см. http://codebox.org.uk/pages/bitmeteros/downloads .
Вы также можете использовать язык без оболочки для этой задачи:
ruby -e '
files = Dir.glob("*")
groups = files.group_by {|f| f.sub(/_.*/, "")}
groups.each_value {|flist| File.delete(*flist) if flist.length < 15}
'
или
perl -e '
foreach $f (glob "*") {
($prefix = $f) =~ s/_.*//;
push @{$groups{$prefix}}, $f;
}
foreach $flist (values %groups) {
unlink @$flist if (scalar @$flist < 15);
}
'
Еще один возможный ответ:
$ declare -A pref ; for f in *_[0-9]*.jpg ; do p=${f%_*} ; (( pref[$p]++ )); done ; for p in "${!pref[@]}" ; do (( ${pref[$p]} < 15 )) && rm "$p"_* ; done
Untested, но вы можете сделать что-то вроде:
printf "%s\n" *.jpg | cut -d_ -f1 | sort -u | while IFS= read -r prefix; do
files=( "$prefix"*.jpg )
if [[ "${#files[@]}" -ne 15 ]]; then
echo rm "$prefix"*
fi
done
. Он находит список уникальных префиксов и, для каждого, помещает список файлов в массив: если размер массива не 15, а затем удалить.
Вы также можете использовать оболочку языка для этой задачи:
ruby -e '
files = Dir.glob("*")
groups = files.group_by {|f| f.sub(/_.*/, "")}
groups.each_value {|flist| File.delete(*flist) if flist.length < 15}
'
или
perl -e '
foreach $f (glob "*") {
($prefix = $f) =~ s/_.*//;
push @{$groups{$prefix}}, $f;
}
foreach $flist (values %groups) {
unlink @$flist if (scalar @$flist < 15);
}
'
Еще один возможный ответ:
$ declare -A pref ; for f in *_[0-9]*.jpg ; do p=${f%_*} ; (( pref[$p]++ )); done ; for p in "${!pref[@]}" ; do (( ${pref[$p]} < 15 )) && rm "$p"_* ; done
Untested, но вы можете сделать что-то вроде:
printf "%s\n" *.jpg | cut -d_ -f1 | sort -u | while IFS= read -r prefix; do
files=( "$prefix"*.jpg )
if [[ "${#files[@]}" -ne 15 ]]; then
echo rm "$prefix"*
fi
done
. Он находит список уникальных префиксов и, для каждого, помещает список файлов в массив: если размер массива не 15, а затем удалить.