найдите использование команды

Что относительно того, чтобы использовать разность для сравнения двух файлов, считая строки дифференцируемого текста с 'туалетом-l' и затем считая фактические строки в обоих из сравненных файлов. Если различные строки значительно меньше, чем фактические строки файлов затем, смело можно сказать, файлы более подобны, чем нет. Это - запуск, по крайней мере.

Вот идея того, что Вы сделали бы.Примечание: это предполагает, что Вы имеете дело с недвоичными файлами

Сначала Вы хотите получить количество строки каждого файла:

$ cat <file1> | wc -l
24
$ cat <file2> | wc -l
18
$ cat <file3> | wc -l
25
$ cat <file4> | wc -l
4

Затем пройдите каталог, сравнив файлы с 'разностью' и считая различия в строке:

$ diff <file1> <file2> | wc -l 
47
$ diff -ib <file1> <file3>  | wc -l
12
$ diff -ib <file1> <file4>  | wc -l
34

Это - основная идея.

Сценарий ниже сделает это для Вас (воздействует на текущий каталог), и повторит любое время, разность является меньше, чем сумма строк в любом из файлов. Вы могли изменить это, чтобы быть более осторожными, только найдя соответствия для различных количеств строк, которые являются больше чем 10 + меньше, чем номера строки любого файлы.

for i in `ls`; do 
  for f in `ls`; do 
    if [ $i != $f ]; then 
      F_LINES=`cat $f | wc -l`; 
      I_LINES=`cat $i | wc -l`; 
      DIFF=`diff -ib $i $f | wc -l`;
      if [ $I_LINES -ge $DIFF ]; then 
        if [ $F_LINES -ge $DIFF ]; then 
          echo "SIMILAR: $i [lines: $I_LINES] - $f [lines: $F_LINES] - # lines different: $DIFF";
        fi;
      fi;
    fi;
  done; 
done

Этот сценарий, как я сказал, ничто специальное и мог быть значительно упрощен, но я делаю это на лету. Это произвело бы что-то вроде этого (учитывая тестовый пример файла выше).

SIMILAR: <file1> [lines: 24] - <file3> [lines: 25] - # lines different: 12
SIMILAR: <file3> [lines: 25] - <file1> [lines: 24] - # lines different: 12
1
26.11.2018, 01:52
2 ответа

Панель | интерпретируется Вашей оболочкой. Попробуйте следующее

find /path/to/files* -mtime +7 -a -size +1M
6
27.01.2020, 23:11
  • 1
    -and не является портативным и на самом деле ничего не делает в этом случае. -and подразумевается. –  jordanm 31.07.2013, 22:49
  • 2
    Спасибо за подсказку! Измененный -and кому: -a. Я думаю, что видимый оператор делает оператор более четким. –  user1146332 31.07.2013, 22:53

Попробуйте следующую строку

find /path/to/files -mtime +7 -size +1M
7
27.01.2020, 23:11
  • 1
    Необходимо предварительно ожидать 7 и 1M с a + знак –  user1146332 31.07.2013, 22:35

Теги

Похожие вопросы