Подойдет что-то вроде этого:
for fa in A/*; do
highest_pm=0
for fb in B/*; do
num_identical_lines=$(diff --unchanged-group-format='%<' --old-group-format='' --new-group-format='' --changed-group-format='' "$fa" "$fb" | wc -l)
num_lines_file_a=$(wc -l < "$fa")
# save permille of matching lines
pm=$((1000*num_identical_lines/num_lines_file_a))
# compare with highest permille
if [ $pm -gt $highest_pm ]; then
highest_pm=$pm
best_match="$fb"
fi
done
# output
[ $highest_pm -gt 0 ] \
&& printf "File %s best matches File %s with %d %% of identical lines.\n" "$fa" "$best_match" $((highest_pm/10)) \
|| printf "File %s has no match\n" "$fa"
done
Оценка num _идентичных _строк основана на этом ответе .
Остальное — просто цикл по файлам, некоторое сравнение и некоторый вывод;-)
Выход:
File A/file2 has no match
File A/filea best matches File B/fileb with 50 % of identical lines.
Нам нужно установить один пакет:
sudo apt-get install build-essential
Создание пакета Debian
Для этого мы используем dpkg -инструмент deb . Прежде всего, нам нужно создать структуру пакета debian . Единственные файлы, необходимые для сборки пакета debian , это:
DEBIAN/управление пользовательские файлы, которые должны быть частью пакета (не требуются )Сначала создайте каталог с именем helloworld . В этом каталоге будут храниться все необходимые файлы пакетов :
.mkdir helloworld
Затем создайте каталог DEBIAN и управляющий файл:
mkdir helloworld/DEBIAN
vi helloworld/DEBIAN/control
Внутри контрольного файла мы вводим следующую информацию:
Package: linuxconfig
Version: 1.0
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: linuxconfig.org
Description: Print linuxconfig.org on the screen
Отлично, не хватает только нашей helloworld
программы. Внутри каталога helloworld
мы создаем дерево каталогов, которое представляет путь, по которому наша программа будет установлена в системе, и копируем в него исполняемый файл:
mkdir -p helloworld/usr/bin/
cp /path/to/helloworld helloworld/usr/bin/
На данный момент мы готовы создать пакет:
dpkg-deb --build helloworld
dpkg-deb: building package `helloworld ' in `helloworld.deb'.
ls
linuxconfig linuxconfig.deb
Вы можете изменить имя пакета, чтобы оно включало версию программы и архитектуру пакета. Например:
mv helloworld.deb helloworld-1.0_amd64.deb
Готово! Наш пакет готов!( ПРИМЕЧАНИЕ :это всего лишь пример, создание официальных пакетов требует дополнительной работы).