diff --git a/CHANGELOG.md b/CHANGELOG.md
index e5d0479b31..da4e2152ee 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,8 @@
 
 ### Modules
 
+- Update patch file paths if the modules directory has the old structure ([#1878](https://github.com/nf-core/tools/pull/1878))
+
 ## [v2.6 - Tin Octopus](https://github.com/nf-core/tools/releases/tag/2.6) - [2022-10-04]
 
 ### Template
diff --git a/nf_core/modules/modules_command.py b/nf_core/modules/modules_command.py
index 1020158b78..83705a0bb7 100644
--- a/nf_core/modules/modules_command.py
+++ b/nf_core/modules/modules_command.py
@@ -176,11 +176,46 @@ def check_modules_structure(self):
                 # Move wrong modules to the right directory
                 for module in wrong_location_modules:
                     modules_dir = Path("modules").resolve()
-                    correct_dir = Path(modules_dir, self.modules_repo.repo_path, Path(*module.parts[2:]))
+                    module_name = str(Path(*module.parts[2:]))
+                    correct_dir = Path(modules_dir, self.modules_repo.repo_path, Path(module_name))
                     wrong_dir = Path(modules_dir, module)
                     shutil.move(wrong_dir, correct_dir)
                     log.info(f"Moved {wrong_dir} to {correct_dir}.")
+                    # Check if a path file exists
+                    patch_path = correct_dir / Path(module_name + ".diff")
+                    self.check_patch_paths(patch_path, module_name)
                 shutil.rmtree(Path(self.dir, "modules", self.modules_repo.repo_path, "modules"))
                 # Regenerate modules.json file
                 modules_json = ModulesJson(self.dir)
                 modules_json.check_up_to_date()
+
+    def check_patch_paths(self, patch_path, module_name):
+        """
+        Check that paths in patch files are updated to the new modules path
+        """
+        if patch_path.exists():
+            log.info(f"Modules {module_name} contains a patch file.")
+            rewrite = False
+            with open(patch_path, "r") as fh:
+                lines = fh.readlines()
+                for index, line in enumerate(lines):
+                    # Check if there are old paths in the patch file and replace
+                    if f"modules/{self.modules_repo.repo_path}/modules/{module_name}/" in line:
+                        rewrite = True
+                        lines[index] = line.replace(
+                            f"modules/{self.modules_repo.repo_path}/modules/{module_name}/",
+                            f"modules/{self.modules_repo.repo_path}/{module_name}/",
+                        )
+            if rewrite:
+                log.info(f"Updating paths in {patch_path}")
+                with open(patch_path, "w") as fh:
+                    for line in lines:
+                        fh.write(line)
+                # Update path in modules.json if the file is in the correct format
+                modules_json = ModulesJson(self.dir)
+                modules_json.load()
+                if modules_json.has_git_url_and_modules():
+                    modules_json.modules_json["repos"][self.modules_repo.remote_url]["modules"][
+                        self.modules_repo.repo_path
+                    ][module_name]["patch"] = str(patch_path.relative_to(Path(self.dir).resolve()))
+                modules_json.dump()
diff --git a/nf_core/modules/patch.py b/nf_core/modules/patch.py
index ec5e05a277..565a193729 100644
--- a/nf_core/modules/patch.py
+++ b/nf_core/modules/patch.py
@@ -50,7 +50,7 @@ def patch(self, module=None):
         module_dir = [dir for dir, m in modules if m == module][0]
         module_fullname = str(Path("modules", module_dir, module))
 
-        # Verify that the module has an entry is the modules.json file
+        # Verify that the module has an entry in the modules.json file
         if not self.modules_json.module_present(module, self.modules_repo.remote_url, module_dir):
             raise UserWarning(
                 f"The '{module_fullname}' module does not have an entry in the 'modules.json' file. Cannot compute patch"
diff --git a/nf_core/modules/update.py b/nf_core/modules/update.py
index cd59a4109b..f40b3743f9 100644
--- a/nf_core/modules/update.py
+++ b/nf_core/modules/update.py
@@ -613,6 +613,9 @@ def try_apply_patch(self, module, repo_path, patch_relpath, module_dir, module_i
         patch_path = Path(self.dir / patch_relpath)
         module_relpath = Path("modules", repo_path, module)
 
+        # Check that paths in patch file are updated
+        self.check_patch_paths(patch_path, module)
+
         # Copy the installed files to a new temporary directory to save them for later use
         temp_dir = Path(tempfile.mkdtemp())
         temp_module_dir = temp_dir / module