Конфигурационные файлы системного лотка KDE могут быть найдены в ~/.kde4/share/config/plasma-desktop-appletsrc
.
С разностью GNU передайте один из файлов как аргумент --from-file
и любое число других как операнд:
$ diff -q --from-file file1 file2 file3 file4; echo $?
0
$ echo >>file3
$ diff -q --from-file file1 file2 file3 file4; echo $?
Files file1 and file3 differ
1
Как насчет:
md5sum * | awk 'BEGIN{rc=1}NR>1&&$1!=last{rc=0}{last=$1}END{exit rc}'
Вычисляет значение MD5 для каждого файла, затем сравнивает каждую запись со следующим, если кто-либо отличается, то возвратите нулевой (истинный) статус выхода. Это было бы намного короче, если бы это возвратило false если отличающийся:
md5sum * | awk 'NR>1&&$1!=last{exit 1}{last=$1}'
Нет никакой потребности отсортировать, так как мы просто проверяем, отличается ли кто-либо.
Следующий код должен быть справедливо сам объяснительный. $#
количество аргументов файла, и shift
просто использует их по одному. Использование cmp -s
для тихого мудрого байтом сравнения.
#!/bin/sh
# diffseveral
if [ $# -lt 2 ]; then
printf '%s\n' "Usage: $0 file1 file2 [files ...]" >&2
exit 2
fi
oldfile="$1"
shift
while [ $# -gt 0 ]; do
newfile="$1"
if ! cmp -s "$oldfile" "$newfile"; then
echo 'Files differ.'
exit 1;
fi
shift
done
echo 'All files identical.'
exit 0
Вы можете только diff
два за один раз, но довольно легко проверить, равны ли они все:
if diff file1 file2 && diff file2 file3 && diff file3 file4; then
echo All equal
else
echo Not
fi
Если у Вас есть достаточно для выравнивания по ширине цикла, используйте что-то вроде этого:
alleq () {
for file; do
diff -q "$1" "$file" >/dev/null || return 1
done
}
if alleq file1 file2 ...; then
echo All equal
else
echo Not
fi