This looks like a job for find. Change to the directory dir, and issue the following command:
find . -type f -name "archive.zip" -execdir unzip {} \; - This will search all directories starting with the current (
., which is equal todirin your case) for files (-type f) with the namearchive.zip. - If found, it will execute the command
unzip {}in the directory where the file was found (-execdir), with{}being the reference to the name of the found file (whichfindwill replace with the actual filename - in this case, simplyarchive.zip).
It will have the same effect as saying cd 001/; unzip archive.zip; cd ..; cd 002/; unzip archive.zip ... (I think you get the point).
NoteNote that the ; terminating the command-to-be-executed must really be escaped with a \, otherwise the shell will interpret it before it reaches find.
Also, if the dir/ directoriesdirectory itself can contain an archive.zip that you don't want extracted, you have to add the -mindepth 1 argument after the starting point . to ensure that find only considers files starting at the first subdirectory-level below dir/.