Сравнить независимые строки в двух файлах [закрыто ]

С версией переименования, которую вы, кажется, используете, следующее выражение должно выполнить запрашиваемое вами преобразование (например, с каталогом , содержащим файлы с именем File_Ex_ {1 .. 11} .jpg ):

$ rename -n -e 's/_(\d\.)/_0$1/g' -- *.jpg
'File_Ex_1.jpg' would be renamed to 'File_Ex_01.jpg'
'File_Ex_2.jpg' would be renamed to 'File_Ex_02.jpg'
'File_Ex_3.jpg' would be renamed to 'File_Ex_03.jpg'
'File_Ex_4.jpg' would be renamed to 'File_Ex_04.jpg'
'File_Ex_5.jpg' would be renamed to 'File_Ex_05.jpg'
'File_Ex_6.jpg' would be renamed to 'File_Ex_06.jpg'
'File_Ex_7.jpg' would be renamed to 'File_Ex_07.jpg'
'File_Ex_8.jpg' would be renamed to 'File_Ex_08.jpg'
'File_Ex_9.jpg' would be renamed to 'File_Ex_09.jpg'

(Удалите флаг -n , чтобы фактически выполнить переименование.)

Аргумент -e - это поиск Perl и -заменить выражение; где _ (\ d \.) соответствует знаку подчеркивания, за которым следует одна цифра, а затем точка , и заменяет подчеркивание на _0 , таким образом вставляя ведущий ноль. $ 1 является обратной ссылкой на группу в круглых скобках, цифру и точку, и оставляет ее без изменений в новом имени файла.

1
18.03.2016, 01:31
1 ответ

Как упоминалось в комментариях, то, что вы просите, - это именно то, что делает comm . Выполните comm -32 file1 file2, чтобы увидеть строки в file1, которых нет в file2, или comm -31 file1 file2, чтобы увидеть строки в file2, которых нет в file1, или comm -3 file1 file2, чтобы увидеть строки, которые присутствуют только в одном из файлов, причем строки, уникальные для file2, отделены табуляцией.

Обратите внимание, что comm требует, чтобы его входные данные были отсортированы. Если у вас есть уже отсортированные файлы, убедитесь, что они отсортированы в той же локали.

2
27.01.2020, 23:35

Теги

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