frame.setContentPane(newContents());
frame.revalidate(); // frame.pack() if you want to resize.
Помните, что Java использует передачу «копировать ссылку по значению». Таким образом, изменение переменной не изменит копии ссылки, переданной другим методам.
Также обратите внимание, что JFrame
очень сбивает с толку имя юзабилити. Добавление компонента или настройка макета (обычно) выполняет операцию на панели содержимого. Как ни странно, получение макета действительно дает вам менеджер компоновки фрейма.
Позвольте мне предположить:
dir1/out.txt
, dir2/out.txt
, .. dir8/out.txt
. Тогда как насчет шагов:
sha256sum
. [Тысяча сто двадцать одна] Я создал 8 тестовых файлов, из которых dir1 / out.txt, dir2 / out.txt и dir4 / out.txt являются идентичными, dir3 / out.txt и dir7 / out.txt идентичны, и другие отличаются.
Тогда значения хеш-функции будут выглядеть следующим образом:
sha256sum dir*/out.txt
298497ad818c3d927498537ed5ab4f9ae663747b6d00ec9a5d0bd9e30a6b714b dir1/out.txt
298497ad818c3d927498537ed5ab4f9ae663747b6d00ec9a5d0bd9e30a6b714b dir2/out.txt
e962879ef251f2117460cf0d5ce714e36a9ab79f2548c48e2121b4e573cf179b dir3/out.txt
298497ad818c3d927498537ed5ab4f9ae663747b6d00ec9a5d0bd9e30a6b714b dir4/out.txt
f45151f5253c62de69c95935f083b5649876fdb661412d4f32065a7b018bf68b dir5/out.txt
bdc26931acfb734b142a8d675f205becf27560dc461f501822de13274fe6fc8a dir6/out.txt
e962879ef251f2117460cf0d5ce714e36a9ab79f2548c48e2121b4e573cf179b dir7/out.txt
11a77c3d96c06974b53d7f40a577e6813739eb5c811b2a86f59038ea90add772 dir8/out.txt
Чтобы суммировать результат, позвольте мне заменить значения хеш-функции идентификатором группы , имеющим одинаковое число для тех же файлов в порядок появления.
Вот сценарий:
sha256sum dir*/out.txt | awk '{if (!gid[$1]) gid[$1] = ++n; print $2 " " gid[$1]}'
Вывод:
dir1/out.txt 1
dir2/out.txt 1
dir3/out.txt 2
dir4/out.txt 1
dir5/out.txt 3
dir6/out.txt 4
dir7/out.txt 2
dir8/out.txt 5
, где во втором поле отображается идентификатор группы , чтобы указать, какие файлы идентичны. [ 1131]
Обратите внимание, что идентификатор группы не представляет содержимое каждого файла как: if 2 of the out.txt files are all '1' = F , and if all '0' = 0
, потому что я понятия не имею, как выглядят файлы. Если OP может предоставить файлы примеров, я мог бы помочь.
Кстати, я все еще сомневаюсь, что файлы являются двоичными в обычном смысле, потому что OP упоминает, что «это просто файл, который имеет 0 или 1 в своем значении, когда я его открываю». Мне кажется, файлы состоят из «0» и «1». Мой скрипт выше должен работать как для двоичных, так и для текстовых файлов.
[Обновление]
Согласно информации ОП, есть решение для конкретного случая:
#!/bin/bash
for f in dir*/out.txt; do
if [[ $(uniq "$f" | wc -l) = 1 ]]; then
echo -n "$(head -1 "$f" | tr 1 F)"
else
echo -n "-"
fi
done
echo
Он переваривает содержимое каждого файла либо из: 0
для всех 0, F
для всех 1 или -
для случая смешения (возможная ошибка).
Например, если dir {1..4} /out.txt - все 0, dir5 / out.txt - смесь, а dir {6..8} /out.txt - все 1, то результат будет выглядеть следующим образом :
0000-FFF
Я надеюсь, что это будет соответствовать требованиям ОП.
cat $path/$files|uniq -u>/tmp/output.txt
grep -f /tmp/output.txt $path/$files