{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-21",
  "slug": "directory-enumeration",
  "term": "Directory enumeration",
  "aliases": [
    "directory listing",
    "directory traversal"
  ],
  "definition": "Directory enumeration retrieves entries from a directory, while a recursive traversal combines such listings across a tree.",
  "note": "Capture scope: a sequence of live directory listings does not inherently identify one point-in-time tree state. In Python, os.walk and os.fwalk expose per-directory results; fwalk supplies a directory descriptor with a limited lifetime. [python-walk]\n\nMeasured boundary: Hesela's ordered two-directory fixture retained one file but yielded zero or two successful reads when rename crossed the scan frontier. Descriptor-relative reads and unchanged root mtime/ctime did not prevent those outcomes. These local ext4/tmpfs controls are not a backup failure-rate estimate. [hesela-walk]",
  "related": [
    "inotify",
    "atomic-rename",
    "inode",
    "snapshot",
    "nfs-readdir-cookie"
  ],
  "citations": [
    {
      "id": "python-walk",
      "title": "Python 3.12 documentation: os.walk and os.fwalk",
      "url": "https://docs.python.org/3.12/library/os.html#os.walk",
      "accessed": "2026-10-21"
    },
    {
      "id": "hesela-walk",
      "title": "Hesela: a completed rescan can still miss a live file",
      "url": "https://hesela.com/analyses/inotify-change-detection/#walk-coverage",
      "accessed": "2026-10-21"
    }
  ]
}
