Вы можете использовать команду basename
для удаления базового имени:
find dir1 -type f -exec basename '{}' .a \; | sort > list1
find dir2 -type f -exec basename '{}' .b \; | sort > list2
Затем используйте diff list1 list2
для сравнения двух. Или, возможно, используйте comm
вместо diff
.
В качестве альтернативы базовому имени (которое требует явного указания .a
и .b
), вы также можете использовать sed
, чтобы удалить все после последнего точка:
ls dir1 | sed -e 's,\.[^.]*$,,' | sort > list1
ls dir2 | sed -e 's,\.[^.]*$,,' | sort > list2