diff --git a/completions/sha256sum b/completions/sha256sum
index adef1cd4a8c..ba2ad08472a 100644
--- a/completions/sha256sum
+++ b/completions/sha256sum
@@ -20,18 +20,20 @@ _comp_cmd_sha256sum()
 
     local sumtype=${1##*/}
     sumtype=${sumtype%sum}
+    local sumglob="@(*.$sumtype|@(check|${sumtype})sums?(.txt))"
 
-    local opt
+    local files opt
     for opt in "${words[@]}"; do
         if [[ $opt == -@(c|-check) ]]; then
-            _comp_compgen_filedir "$sumtype"
+            _comp_compgen -v files filedir &&
+                _comp_compgen -- -X "!$sumglob" -W '"${files[@]}"'
             return
         fi
     done
 
     local files
     _comp_compgen -v files filedir &&
-        _comp_compgen -- -X "*.$sumtype" -W '"${files[@]}"'
+        _comp_compgen -- -X "$sumglob" -W '"${files[@]}"'
 } &&
     complete -F _comp_cmd_sha256sum b2sum md5sum sha{,1,224,256,384,512}sum
 
diff --git a/test/fixtures/sha256sum/checksums b/test/fixtures/sha256sum/checksums
new file mode 100644
index 00000000000..26d55dc42a5
--- /dev/null
+++ b/test/fixtures/sha256sum/checksums
@@ -0,0 +1 @@
+e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  foo
diff --git a/test/fixtures/sha256sum/checksums.txt b/test/fixtures/sha256sum/checksums.txt
new file mode 100644
index 00000000000..26d55dc42a5
--- /dev/null
+++ b/test/fixtures/sha256sum/checksums.txt
@@ -0,0 +1 @@
+e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  foo
diff --git a/test/fixtures/sha256sum/sha256sums b/test/fixtures/sha256sum/sha256sums
new file mode 100644
index 00000000000..26d55dc42a5
--- /dev/null
+++ b/test/fixtures/sha256sum/sha256sums
@@ -0,0 +1 @@
+e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  foo
diff --git a/test/fixtures/sha256sum/sha256sums.txt b/test/fixtures/sha256sum/sha256sums.txt
new file mode 100644
index 00000000000..26d55dc42a5
--- /dev/null
+++ b/test/fixtures/sha256sum/sha256sums.txt
@@ -0,0 +1 @@
+e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  foo
diff --git a/test/t/test_sha256sum.py b/test/t/test_sha256sum.py
index c8df94c461c..b919233787e 100644
--- a/test/t/test_sha256sum.py
+++ b/test/t/test_sha256sum.py
@@ -12,4 +12,10 @@ def test_summing(self, completion):
 
     @pytest.mark.complete("sha256sum -c ", cwd="sha256sum")
     def test_checking(self, completion):
-        assert completion == "foo.sha256"
+        assert completion == [
+            "checksums",
+            "checksums.txt",
+            "foo.sha256",
+            "sha256sums",
+            "sha256sums.txt",
+        ]