{"id":16215617,"url":"https://github.com/njgibbon/file-dir-set-ops","last_synced_at":"2025-06-24T06:36:08.597Z","repository":{"id":57429367,"uuid":"407299172","full_name":"njgibbon/file-dir-set-ops","owner":"njgibbon","description":"Set Operations on File Directories.","archived":false,"fork":false,"pushed_at":"2021-09-22T21:34:36.000Z","size":495,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T17:50:44.592Z","etag":null,"topics":["cli","dirs","files","python","sets","tools"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/njgibbon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-16T20:03:02.000Z","updated_at":"2024-09-13T15:03:40.000Z","dependencies_parsed_at":"2022-08-27T17:01:37.138Z","dependency_job_id":null,"html_url":"https://github.com/njgibbon/file-dir-set-ops","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njgibbon%2Ffile-dir-set-ops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njgibbon%2Ffile-dir-set-ops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njgibbon%2Ffile-dir-set-ops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/njgibbon%2Ffile-dir-set-ops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/njgibbon","download_url":"https://codeload.github.com/njgibbon/file-dir-set-ops/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243982177,"owners_count":20378604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","dirs","files","python","sets","tools"],"created_at":"2024-10-10T11:15:30.950Z","updated_at":"2025-03-19T10:30:21.973Z","avatar_url":"https://github.com/njgibbon.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"images/file-dir-set-ops.png\" alt=\"file-dir-set-ops\" width=\"300\"\u003e\n\nSet Operations on File Directories.\n\nUse some basic Set Operations to analyse and compare the file names in 2 or more given directories.\n\n# Background\nSeveral times over the past couple of years I've had to work out the difference between 2 folders in terms of files.\n\nEach time it's manually looking \u003e unix utilities \u003e ad-hoc scripts.\n\nThis little tool should permanently solve this problem.\n\n\n# Install\n```\npip3 install file-dir-set-ops --upgrade\n```\n\n\n# Usage\n## Data\n![sets](images/sets.gif)\n\n## Union\n![union](images/union.gif)\n\n\u003cimg src=\"images/venn-union.png\" alt=\"venn-union\" width=\"150\"\u003e\n\n(In **A** OR **B** OR **C**)\n```\nfile-dir-set-ops --operation union --dir-paths tests/data/a tests/data/b tests/data/c\n\na.txt\nb.txt\nc.txt\nfile.txt\n```\n\n## Intersection\n![union](images/intersection.gif)\n\n\u003cimg src=\"images/venn-intersection.png\" alt=\"venn-intersection\" width=\"150\"\u003e\n\n(In **A** AND **B** AND **C**)\n```\nfile-dir-set-ops --operation intersection --dir-paths tests/data/a tests/data/b tests/data/c\n\nfile.txt\n```\n\n## Relative Complement (Set Difference)\n![complement](images/complement.gif)\n\n\u003cimg src=\"images/venn-complement.png\" alt=\"venn-complement\" width=\"150\"\u003e\n\n(In **A** AND Not in **B** OR **C**)\n```\nfile-dir-set-ops --operation complement --dir-paths tests/data/a tests/data/b tests/data/c\n\na.txt\n```\n\n\n# Resources\n* Set Theory: https://en.wikipedia.org/wiki/Set_theory\n* Union: https://en.wikipedia.org/wiki/Union_(set_theory)\n* Intersection: https://en.wikipedia.org/wiki/Intersection_(set_theory)\n* (Relative) Complement: https://en.wikipedia.org/wiki/Complement_(set_theory)\n* Python Sets: https://realpython.com/python-sets\n* https://www.codecogs.com/latex/eqneditor.php\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjgibbon%2Ffile-dir-set-ops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnjgibbon%2Ffile-dir-set-ops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjgibbon%2Ffile-dir-set-ops/lists"}