Requirements are a precursor to the spec, and are a list of MUSTS, SHOULDS, and WBNIS which need to go into the feature/product.
The Spec is a description of how these requirements are/will be met.
An example for the ‘ls’ command:
Requirement: “the user MUST be able to include or exclude hidden files”
Spec: “by default hidden files are not shown. Including the optional argument ‘-a’ will cause hidden files to be listed alongside non-hidden files”