{"id":13626312,"url":"https://github.com/fukawi2/ffiler","last_synced_at":"2026-01-30T06:51:36.079Z","repository":{"id":32275280,"uuid":"35849936","full_name":"fukawi2/ffiler","owner":"fukawi2","description":"File Filer; sort files into structured directory tree. Tree can be structured based on various designs such as date (file modification time), file hash, file prefix etc","archived":false,"fork":false,"pushed_at":"2017-10-22T03:31:09.000Z","size":24,"stargazers_count":47,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-08T16:43:05.659Z","etag":null,"topics":["filesystem","organizer","sort-files","tree-structure"],"latest_commit_sha":null,"homepage":"http://ffiler.info","language":"Shell","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/fukawi2.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":"2015-05-19T00:32:33.000Z","updated_at":"2024-09-14T17:28:02.000Z","dependencies_parsed_at":"2022-07-20T18:02:04.074Z","dependency_job_id":null,"html_url":"https://github.com/fukawi2/ffiler","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fukawi2%2Fffiler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fukawi2%2Fffiler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fukawi2%2Fffiler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fukawi2%2Fffiler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fukawi2","download_url":"https://codeload.github.com/fukawi2/ffiler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249250820,"owners_count":21237961,"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":["filesystem","organizer","sort-files","tree-structure"],"created_at":"2024-08-01T21:02:15.194Z","updated_at":"2026-01-30T06:51:35.988Z","avatar_url":"https://github.com/fukawi2.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# ffiler\nFile Filer; sorts files into structured directory tree. Tree can be structured\nbased on various designs such as date (_file modification time_), file hash,\nfile prefix etc\n\n# Usage\n\n## Filing Method\nThere are various filing tree structures available:\n\n- Modified Timestamp\n- MD5 hash of file name\n- MD5 hash of file contents (slower)\n- Leading characters of file name\n- MIME type of file\n\n### Modified Timestamp\nAn example tree (directories only) filing to a depth of 2 (YYYY/Month/):\n\n```\n├── 2014\n│   ├── 01-Jan\n│   ├── 02-Feb\n│   ├── ...\n│   ├── 11-Nov\n│   └── 12-Dec\n└── 2015\n    ├── 01-Jan\n    ├── 02-Feb\n    ├── 03-Mar\n    ├── 04-Apr\n    └── 05-May\n ```\n\n### By MD5 Hash\nAn example tree (directories only) filing to a depth of 2 characters:\n\n```\n├── 2\n│   ├── 2\n│   └── b\n├── a\n│   ├── 1\n│   └── e\n└── e\n    ├── 1\n    └── 7\n```\n\n### By Filename\nSimilar to filing by hash, but don't bother to hash anything first (just take\nthe first X characters of the filename).\n\nAn example tree (including files) filing to a depth of 2 characters:\n\n```\n├── e\n│   ├── l\n│   │   └── elephant\n│   └── x\n│       └── example\n├── f\n│   ├── f\n│   │   └── ffiler\n│   └── i\n│       └── file\n└── t\n    └── e\n            └── test\n```\n\n### Mime type\n\nAn example tree (including files):\n\n```\n├── application\n│   └── postscript\n│       └── mylogo.eps\n└── image\n    ├── jpeg\n    │   ├── mylogo.jpg\n    │   ├── yourlogo.jpg\n    │   └── herlogo.jpeg\n    └── png\n        └── hislogo.png\n```\n\n## Filing Depth\nMost of the filing methods require a depth for the resulting tree structure.\nValid depths depend on the filing method.\n\nFor string-based methods (MD5 hashes or filenames) the depth is the number of\ncharacters (positive integer) to build the tree with.\n\n*Example:* `ffiler -ss -d2` _(Sort to the second character as above)_\n\nFor timestamp-based methods (modified time) the depth is the timestamp\ngranularity:\n\n- `y` = Year   (eg `2010/`)\n- `m` = Month  (eg `2010/01-Jan/`)\n- `d` = Day    (eg `2010/01-Jan/15/`)\n- `H` = Hour   (eg `2010/01-Jan/15/18/`)\n- `M` = Minute (eg `2010/01-Jan/15/18/20/`)\n- `S` = Second (eg `2010/01-Jan/15/18/20/34/`)\n\n*Example:* `ffiler -sm -dm` _(Sort to the \"month\" level)_\n\n## Action\n\nffiler can move (default), copy, symlink or hardlink files into the destination\ntree. The flags for these are:\n\n```\n-M  Move\n-C  Copy\n-L  Symbolic Link\n-H  Hard Link\n```\n\n# Installation\n\n## Arch Linux\n\nPKGBUILD is in the AUR: https://aur.archlinux.org/packages/ffiler-git/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffukawi2%2Fffiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffukawi2%2Fffiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffukawi2%2Fffiler/lists"}