Как насчет одного USB-накопителя с несколькими LiveOS?
Вы можете разместить 32-битный дистрибутив и несколько 64-битных дистрибутивов на одном USB-накопителе с Мультизагрузкой , Мультисистемой(Веб-обзор на английском языке и другим обзором на английском языке)и XBOOT .
Хотя это и не совсем то, что вы просили, это дает вам все на одном флэш-накопителе.
Вот так. Две прямые sed
замены
a='Only in /tmp/__tmp_comp206_alex/test_files/: file_1.txt'
b='Files /tmp/__tmp_comp206_alex/test_files/file_3.conf and /tmp/__tmp_comp206_alex/diff_dir/file_3.conf differ'
printf "%s\n%s\n" "$a" "$b" |
sed -e 's!^Only in \([^:]*\)/: \(.*\)!\1/\2 is missing!' -e 's!^Files.* and \(.*\) differ$!\1 differs!'
Выход
/tmp/__tmp_comp206_alex/test_files/file_1.txt is missing
/tmp/__tmp_comp206_alex/diff_dir/file_3.conf differs
Пояснение
!
вместо /
в качестве разделителя в sed
рецепте s/match/replacement/
, поскольку в противном случае нам пришлось бы экранировать каждое вхождение /
в строках соответствия и замены \1
и \2
в замещающих выражениях escape escape -в квадратных скобках (, т.е.\(...\)
)в части match Большое предположение состоит в том, что у вас нет имен файлов, содержащих двоеточие и другие совпадающие слова из вывода diff
. Выходные данные diff
в лучшем случае ненадежны, и вам, возможно, лучше создать собственный цикл с find
и cmp -s
, которые непосредственно давали желаемый результат. (Я бы предпочел надежное решение.)
#!/bin/bash
src='/tmp/__tmp_comp206_alex/test_files'
dst='/tmp/__tmp_comp206_alex/diff_dir'
( cd "$src" && find -type f -print0 ) |
while IFS= read -r -d '' item
do
if [[ ! -f "$dst/$item" ]]
then
printf "%s is missing\n" "$dst/$item"
elif ! cmp -s "$src/$item" "$dst/$item"
then
printf "%s differs\n" "$dst/$item"
fi
done