Удалите дубликаты из базовых имен в двух файлах

Настольные конфигурационные файлы находятся где-нибудь в корневом каталоге. Это - вероятно, больше, чем просто они, что необходимо установить только для чтения - например, также .bashrc. Так выясняют то, что те файлы и просто chown их кому-то еще, базируйтесь или другой пользователь (необходимо будет, вероятно, использовать sudo). Удостоверьтесь, что у них есть полномочия 644 или 755 (они главным образом будут), и затем протестируйте его; все должно работать, не будучи должен записать, кроме тех случаев, когда Вы идете для конфигурирования, это перестанет работать. Как настольные дескрипторы, который является важным тестом.

4
12.12.2013, 01:47
2 ответа

в awk Вы могли сделать

awk -F "/" ' 
     { filenames[$NF]=$0 ; occurence[$NF]++ ; }
 END { for (basename in filenames) 
       {   if (occurence[basename] == 1) 
           {   print filenames[basename]
           }
       }
     } '  listA  listB

Существует, конечно, более краткий способ сделать это, и я злоупотребляю "{...}", но я надеюсь, что это ясно:

  • мы сначала заполняем "имена файлов []" массив с помощью $NF имени индекса (= поле LAST в использовании строки "/" как разделитель, т.е. базовое имя).

  • И мы также считаем количество $NF, который мы видели благодаря происшествию [] массив (если больше чем "1", у нас только есть последний в именах файлов [$NF], и у нас есть происшествие [$NF]> 1)

  • Затем мы только печатаем тех, которые имеют происшествие == 1

4
27.01.2020, 20:56

Предположение, что у Вас есть свои списки в некоторых файлах path/to/list1.txt и /path/to/list2.txt можно использовать простую программу Python, чтобы добавить два списка в двух списках Python и затем установить объединение их следующим образом:

files1 = [line.strip() for line in open('/path/to/list1.txt')]
files2 = [line.strip() for line in open('/path/to/list2.txt')]

uniqueset = set(files1).union(set(files2))

uniqueset будет содержать уникальные файлы. Можете быть Вы, хотят исключить общие названия в целом из получающегося списка. В этом случае можно сделать следующее:

 uniqueset = set(files1).symmetric_difference(set(files2))
0
27.01.2020, 20:56

Теги

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