Как найти пробелы в списке?

Итак, у меня есть много файлов (167 Кб), и теперь они теперь в правильном порядке, благодаря скрипту Серга здесь - https://askubuntu.com/a/686829/462277 .

И теперь мне нужно найти пробелы между именами файлов, разница должна быть 15 и более

Aaaa.bb - 000002 tag tag_tag 9tag  
Aaaa.bb - 000125 tag tag_tag 9tag  
Aaaa.bb - 000130 tag tag_tag 9tag  

Все они начинаются одинаково и имеют разные окончания.
Все находится на внешнем жестком диске.

1
задан 13 April 2017 в 15:24

2 ответа

find . -maxdepth 1  -type f -regextype posix-awk -iregex ".*[:digit:]"| sort | awk '{  if ( ($3 - previous) > 15 ) print previous"**"$3}{ previous=$3 }'

кодекс выше использования find команда, которая соответствует всем файлам в текущем каталоге, которые содержат цифры в нем, сортирует их и переходит к awk. awk проходит список, хранит каждое число от области 3 в переменную previous, и на следующем пункте соответствует previous текущему номеру

1
ответ дан 14 April 2017 в 01:24
  • 1
    Я открыл/etc/modules, и это уже было текстом # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. lp rt5390sta # Generated by sensors-detect on Thu Sep 4 09:16:43 2014 # Chip drivers coretemp – makkekkazzo 8 January 2017 в 01:17

версия в Python (python3, чтобы быть точным).

сохраните программу ниже под именем diff_filename.py (сделайте это exectuable), и используйте его следующим образом:

$ ./diff_filename.py the/directory/containing/the/files

программа предполагает, что числа, которые Вы хотите сравнить, всегда находятся в том же положении имени файла (индексы 10:16).

поскольку это теперь, это является довольно подробным и распечатывает корректные имена файлов включая различие. как только это поражает имя файла, которое не уважает минимальное различие, это распечатывает это и остановки.

вот исходный код:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

'''
usage: ./diff_filename.py the/directory/containing/the/files
'''

import os
import  sys

MIN_DIFF = 15

the_dir = sys.argv[1]
sorted_files = sorted(os.listdir(the_dir))

last_number = None
last_file = None
for current_file in sorted_files:
    current_number = int(current_file[10:16])
    if last_number is None:
        last_number = current_number
        last_file = current_file
        continue
    diff = current_number - last_number
    if diff < MIN_DIFF:
        print('fail! "{}" and "{}" do not respect MIN_DIFF={}'.format(
            last_file, current_file, MIN_DIFF))
        break
    else:
        print('ok! "{}" and "{}" diff={}'.format(last_file, current_file, diff))

    last_number = current_number
    last_file = current_file
1
ответ дан 14 April 2017 в 01:24
  • 1
    @makkekkazzo хорошо, спасибо. И I' ll пытаются работать над решением для того, что chili555 упомянул в его комментарии. Должно быть довольно легко достигнуть. Напомните мне за несколько дней в случае, если я забываю – Sergiy Kolodyazhnyy 8 January 2017 в 01:19

Другие вопросы по тегам:

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