Вы можете использовать awk
:
awk 'NR==FNR{ z[$5]=$0; next}{ if ($5 in z){ if ($0!=z[$5]){
print >"modifiedCourses.txt"}} else { print >"newCourses.txt"}}' old.txt new.txt
Читается старый.txt
и сохраняет строки в массив (индексы - это названия курсов), а затем читает new.txt
и для каждого курса проверяет, является ли он индексом массива: если это , он проверяет, изменилась ли строка, и если да, то распечатывает ее в modifiedCourses.txt
; если не индекс, он выводит строку в newCourses.txt
. Вы можете изменить $ 0
на $ 7
, если единственное изменение, которое имеет значение, - это часы.
Проблема в том, что оболочка расширяет вашу опцию «*.conf» перед выполнением команды.
используйте find /etc -name "*.conf"
вместо
Метасимволы ('*',?' and
[]' )соответствуют `.' в начале базового имени (это изменение в findutils -4.4.2 ). По сути, вы просто исключаете '.' чтобы получить желаемый результат:
найти /etc -имя *conf