{ "info": { "author": "Steve Morin", "author_email": "steve@stevemorin.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: Other/Proprietary License", "Operating System :: MacOS", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "filegardener\n============\nFile gardener - file maintenance utilities - file dedup, only copy detection, prune empty dirs\n\n\n.. image:: https://img.shields.io/pypi/v/filegardener.svg\n :target: https://pypi.python.org/pypi/filegardener\n\n.. image:: https://img.shields.io/travis/smorin/filegardener/master.svg\n :target: http://travis-ci.org/smorin/filegardener\n\n.. image:: https://readthedocs.org/projects/filegardener/badge/?version=latest\n :target: http://filegardener.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/pyversions/filegardener.svg?maxAge=2592000 \n\n* `Github Page `_\n* `Issue Tracking `_\n\n\nContributions\n-------------\n\nI am completely open to contributions, just open a issue if you want to suggest a feature so we can discuss. If you want a project I need help implementing `mvbase`. I don't accept pull requests with out unit tests, you can look at examples\n\n\nInstall\n-------\n::\n\n\t> pip install filegardener\n\nIf you don't have pip it's also easy to install https://pip.pypa.io/en/stable/installing/\n\nWhen filegardener installs it's installed on the commandline for you so you can just do.\n\n::\n\n\t> filegardener --help\n\n\nBuild\n-----\n::\n\n\t> make\n\nUse-Cases\n---------\n\nChecking for Duplicates\n\nSometimes you want to get a list of all files that are duplicates in a second directory.\n\n::\n\n\nChecking for the only copy of files\n\nSometimes you want to check if the only copy of a file lives on a second drive or directory. This way you can make sure you don't delete the last copy of a file.\n\nA common example would be if you have a bunch of USB Pen Drives and you want to wipe the drives clean but don't want to delete the last copy of a file. You can use this to compare all the files on your computer with what's on your pen drive.\n\nExample:\n::\n\n\ttime filegardener onlycopy --srcdir ~/Pictures --srcdir ~/Music /Volumes/MyUSBDrive/ | tee list_onlycopyfiles_in_dst_dir.txt\n\nIf you want not fail on error and capture the list of file you only have 1 copy of and list of error in trying to check any file. This command will save the list of file you only have one copy of in stdout.log and any errors in stderr.log\n::\n\n\ttime filegardener onlycopy --no-failonerror --srcdir ~/Pictures --srcdir ~/Music /Volumes/MyUSBDrive > >(tee stdout.log) 2> >(tee stderr.log >&2)\n\n\nUsage Summary\n-------------\n\n::\n\n\tUsage: filegardener [OPTIONS] COMMAND [ARGS]...\n\n\t For help on individual commands type:\n\n\t filegardener --help\n \n\n\tOptions:\n\t -d, --debug / --no-debug turn on/off debug mode\n\t --version print programs version\n\t -?, -h, --help Show this message and exit.\n\n\tCommands:\n\t countdirs countdirs command counts the number of...\n\t countfiles countfiles command counts the number of files...\n\t dedup Dedup command prints list of duplicate files...\n\t emptydirs emptydir command lists all the directories...\n\t mvbase mvbase will move a set of files from their...\n\t onlycopy onlycopy command prints list of all the files...\n\t rmdirs rmdirs will delete a set of dirs listed in...\n\t rmfiles rmfiles will delete a set of files listed in...\n\t validatedirs validatedirs reads in a file of dir paths and...\n\t validatefiles validatefiles reads in a file of file paths...\n\ncountdirs\n---------\n::\n\n\t> filegardener countdirs --help\n\n::\n\n\tUsage: filegardener countdirs [OPTIONS] CHECKDIR...\n\n\t countdirs command counts the number of directories in the directories you\n\t give it (excludes dirs you give it)\n\n\tOptions:\n\t -?, -h, --help Show this message and exit.\n\ncountfiles\n----------\n::\n\n\t> filegardener countfiles --help\n\n::\n\n\tUsage: filegardener countfiles [OPTIONS] CHECKDIR...\n\n\t countfiles command counts the number of files in the directories you give\n\t it\n\n\tOptions:\n\t -?, -h, --help Show this message and exit.\n\ndedup\n-----\n::\n\n\t> filegardener dedup --help\n\n::\n\n\tUsage: filegardener dedup [OPTIONS] CHECKDIR...\n\n\t Dedup command prints list of duplicate files in one or more checkdirs\n\n\tOptions:\n\t -s, --srcdir DIRECTORY directories to check [required]\n\t -r, --relpath / --no-relpath turn on/off relative path - default off\n\t -?, -h, --help Show this message and exit.\n\t \nemptydirs\n---------\n::\n\n\t> filegardener emptydirs --help\n\n::\n\n\tUsage: filegardener emptydirs [OPTIONS] CHECKDIR...\n\n\t emptydir command lists all the directories that no file in it or it's sub\n\t directories\n\n\tOptions:\n\t -r, --relpath / --no-relpath turn on/off relative path - default off\n\t -?, -h, --help Show this message and exit.\n\t \nmvbase\n------\n\nThis function isn't implemented yet and is a TODO:, if you want to contribute a pull request with tests that would be great!\n\n::\n\n\t> filegardener mvbase --help\n\n::\n\n\tUsage: filegardener mvbase [OPTIONS] DESTDIR\n\n\t mvbase will move a set of files from their locations, at target directory\n\t to destdir\n\n\tOptions:\n\t -b, --basedir DIRECTORY base directory to join each file path to\n\t -b, --targetdir DIRECTORY location to move all files from [required]\n\t -f, --file PATH file for input files [required]\n\t -?, -h, --help Show this message and exit.\n\nonlycopy\n--------\n::\n\n\t> filegardener onlycopy --help\n\n::\n\n\tUsage: filegardener onlycopy [OPTIONS] CHECKDIR...\n\n\t onlycopy command prints list of all the files that aren't in the srcdir\n\n\tOptions:\n\t -s, --srcdir DIRECTORY directories to check [required]\n\t -r, --relpath / --no-relpath turn on/off relative path - default off\n\t -f, --failonerror / --no-failonerror\n\t turn on/off failing on error - default on\n\t -?, -h, --help Show this message and exit.\n\nrmdirs\n------\n::\n\n\t> filegardener rmdirs --help\n\t\n::\n\n\tUsage: filegardener rmdirs [OPTIONS] FILE...\n\n\t rmdirs will delete a set of dirs listed in the input file(s)\n\n\tOptions:\n\t -b, --basedir DIRECTORY base directory to join each file path to\n\t -e, --exitonfail / --no-exitonfail\n\t turn on/off exit on first failure\n\t -?, -h, --help Show this message and exit.\n\nrmfiles\n-------\n::\n\n\t> filegardener rmfiles --help\n\n::\n\n\tUsage: filegardener rmfiles [OPTIONS] FILE...\n\n\t rmfiles will delete a set of files listed in the input file(s)\n\n\tOptions:\n\t -b, --basedir DIRECTORY base directory to join each file path to\n\t -e, --exitonfail / --no-exitonfail\n\t turn on/off exit on first failure\n\t -?, -h, --help Show this message and exit.\n\nvalidatedirs\n------------\n::\n\n\t> filegardener validatedirs --help\n\n::\n\n\tUsage: filegardener validatedirs [OPTIONS] FILE...\n\n\t validatedirs reads in a file of dir paths and checks that it exists and\n\t passes test\n\n\tOptions:\n\t -b, --basedir DIRECTORY base directory to join each file path to\n\t -e, --exitonfail / --no-exitonfail\n\t turn on/off exit on first failure\n\t -?, -h, --help Show this message and exit.\n\nvalidatefiles\n-------------\n::\n\n\t> filegardener validatefiles --help\n\n::\n\n\tUsage: filegardener validatefiles [OPTIONS] FILE...\n\n\t validatefiles reads in a file of file paths and checks that it exists\n\n\tOptions:\n\t -b, --basedir DIRECTORY base directory to join each file path to\n\t -e, --exitonfail / --no-exitonfail\n\t turn on/off exit on first failure\n\t -?, -h, --help Show this message and exit.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/smorin/filegardener", "keywords": "dedup,file cleanup,empy dirs,duplicate file detection", "license": "", "maintainer": "", "maintainer_email": "", "name": "filegardener", "package_url": "https://pypi.org/project/filegardener/", "platform": "", "project_url": "https://pypi.org/project/filegardener/", "project_urls": { "Homepage": "https://github.com/smorin/filegardener" }, "release_url": "https://pypi.org/project/filegardener/1.6.9/", "requires_dist": null, "requires_python": "", "summary": "filegardener file utilities dedup, only file copy detection, empty dir detection", "version": "1.6.9" }, "last_serial": 2746759, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "89c978374e8d7add5ed7e895ff805bf1", "sha256": "2886dd168ded6ea7df312fa5f5a28f7f59076f1aa0e7c5af2cd6006e8ec1b741" }, "downloads": -1, "filename": "filegardener-1.0.1.tar.gz", "has_sig": false, "md5_digest": "89c978374e8d7add5ed7e895ff805bf1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3146, "upload_time": "2016-07-22T01:06:31", "url": "https://files.pythonhosted.org/packages/7a/cf/8d520dfcb93cc2fedac5d7ebf7ece0ee89273412c7c97584bac050ca7a77/filegardener-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "43326eab33e6b324667ec5ab57084c2d", "sha256": "29b0698f5b708dbaf4fa790d60fb6099ac7d74968a34792f002bfa825faba786" }, "downloads": -1, "filename": "filegardener-1.0.2.tar.gz", "has_sig": false, "md5_digest": "43326eab33e6b324667ec5ab57084c2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3159, "upload_time": "2016-07-22T01:55:46", "url": "https://files.pythonhosted.org/packages/68/0e/f892bf124a1c4ee3b2f15ca1da5c7f91f24a8e134ccceb0b9504c7399882/filegardener-1.0.2.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "4bde7fc87c699668f9f6d260bbb1c931", "sha256": "1f3019184eb0ce70808451f5a4a9f68ad3ceba1ec3caa1d8bfc5a64c870ea302" }, "downloads": -1, "filename": "filegardener-1.1.1.tar.gz", "has_sig": false, "md5_digest": "4bde7fc87c699668f9f6d260bbb1c931", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5974, "upload_time": "2016-07-28T15:57:49", "url": "https://files.pythonhosted.org/packages/f4/23/50685d79fb776245de6171cabb53c3c4366a9dab6744eef418e66f8f4b72/filegardener-1.1.1.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "fbcd393939f95b320918c2f5334ba427", "sha256": "d62af6d7e8cb54ac85a65b43874c33dd2934d928ab31a511495c9edb7b4871ec" }, "downloads": -1, "filename": "filegardener-1.2.1.tar.gz", "has_sig": false, "md5_digest": "fbcd393939f95b320918c2f5334ba427", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6417, "upload_time": "2016-08-01T04:58:32", "url": "https://files.pythonhosted.org/packages/bb/04/7abb11e2204a9148ea2f4f3aae7c326d3f028e14479b523723aa97b2c0dc/filegardener-1.2.1.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "c694275e7b05772770c1d24f0bb6ccf7", "sha256": "e06dc37f4b820b3e992a39f903c35d7b1379362ba4f1a3cac40b781363e07071" }, "downloads": -1, "filename": "filegardener-1.3.1.tar.gz", "has_sig": false, "md5_digest": "c694275e7b05772770c1d24f0bb6ccf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6444, "upload_time": "2016-08-01T06:16:47", "url": "https://files.pythonhosted.org/packages/4f/89/b41ddd17dcb51c84630307f291d08b6320aa4951939fd2d9a0b6d183af7a/filegardener-1.3.1.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "f17e0a5d16188b31cf880c84572066b2", "sha256": "025b3e28a6c68f8b6143ad28f82904c11d01bc9282c2378fd32b83df3d0a8d02" }, "downloads": -1, "filename": "filegardener-1.4.1.tar.gz", "has_sig": false, "md5_digest": "f17e0a5d16188b31cf880c84572066b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7058, "upload_time": "2016-08-02T17:58:12", "url": "https://files.pythonhosted.org/packages/44/cb/be6d70d601adcc07bc559e4812f8cd46529cfbc717121dd84c7f5e67694b/filegardener-1.4.1.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "22da00bf477a546c5fb49efadd3b961d", "sha256": "e0fafd8a84ee73639f607c0be059be1bff8d12dbde80f134b20c3547ace88500" }, "downloads": -1, "filename": "filegardener-1.5.1.tar.gz", "has_sig": false, "md5_digest": "22da00bf477a546c5fb49efadd3b961d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7510, "upload_time": "2016-08-03T03:24:16", "url": "https://files.pythonhosted.org/packages/9c/07/39a92dba5418a0777406c37a36212dcaaeb03911deb69b60d24fbdc67deb/filegardener-1.5.1.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "ff15c354474c734df9eb2f8b01d0afe3", "sha256": "340f13e65567eb4550baa8357fbbb86f57a09b9db519455166ea82f6f82cdd27" }, "downloads": -1, "filename": "filegardener-1.6.2.tar.gz", "has_sig": false, "md5_digest": "ff15c354474c734df9eb2f8b01d0afe3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8890, "upload_time": "2016-08-03T04:14:42", "url": "https://files.pythonhosted.org/packages/05/75/2ec0a97740d8eda640f20e396368e7160204967d1c630c704c888f3d0019/filegardener-1.6.2.tar.gz" } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "6adb15323b10f33030f26cfff176f98b", "sha256": "b76fba0d70fc88c458fbdc31e89fe224a36c0c9a2cc067842311462458f460e3" }, "downloads": -1, "filename": "filegardener-1.6.3.tar.gz", "has_sig": false, "md5_digest": "6adb15323b10f33030f26cfff176f98b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8910, "upload_time": "2016-08-09T21:45:22", "url": "https://files.pythonhosted.org/packages/a5/15/8014b8cb0970ffbfe8c2a365bc744855d4ef79065c74f443d1ba91aa8f47/filegardener-1.6.3.tar.gz" } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "04172171f9c4fb5930cc94c61b547938", "sha256": "08bee880bfadce1e5fcd0800e484e07049d4cd264d0f4e0556942aec5d2a76f3" }, "downloads": -1, "filename": "filegardener-1.6.4.tar.gz", "has_sig": false, "md5_digest": "04172171f9c4fb5930cc94c61b547938", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8933, "upload_time": "2016-08-09T21:51:10", "url": "https://files.pythonhosted.org/packages/4c/ab/f5b59b64bce0d26e00b7c37cc92d44a022f569d79edd9a9f8c0d76d3609e/filegardener-1.6.4.tar.gz" } ], "1.6.5": [ { "comment_text": "", "digests": { "md5": "cb3f8ae72652649466a2e20cd3d0dd51", "sha256": "f22af7ded7f595f32301e7e3bc78c60aeb01190978644188a71ae6a47720420e" }, "downloads": -1, "filename": "filegardener-1.6.5.tar.gz", "has_sig": false, "md5_digest": "cb3f8ae72652649466a2e20cd3d0dd51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8935, "upload_time": "2016-08-09T22:01:12", "url": "https://files.pythonhosted.org/packages/f3/c6/a8f2d534cb40549e0fb12e7b85e8b0f0b4c396a542484f8fe54a023f29d7/filegardener-1.6.5.tar.gz" } ], "1.6.6": [ { "comment_text": "", "digests": { "md5": "64ea2ff4792df6ca70f15d8ef323051b", "sha256": "771c52455206294567cbceb5a5b3220678c1d8170e905bf29974ee8946b57edf" }, "downloads": -1, "filename": "filegardener-1.6.6.tar.gz", "has_sig": false, "md5_digest": "64ea2ff4792df6ca70f15d8ef323051b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8976, "upload_time": "2016-08-09T22:23:20", "url": "https://files.pythonhosted.org/packages/f1/dc/3d7552932319e69b8dd9126be0b00484a9051bd068990110d9ee4088c8fc/filegardener-1.6.6.tar.gz" } ], "1.6.7": [ { "comment_text": "", "digests": { "md5": "2da6aafad39edf6fc94575c72e2768c4", "sha256": "349a57b443a2ee14de994d49c67f940afbcece528c5137d15d4fa5dc36a0d6e3" }, "downloads": -1, "filename": "filegardener-1.6.7-py2-none-any.whl", "has_sig": false, "md5_digest": "2da6aafad39edf6fc94575c72e2768c4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 1730128, "upload_time": "2017-03-26T18:08:40", "url": "https://files.pythonhosted.org/packages/54/ca/bddf8c3a60ab8ac9e39c0b261e5173bebe900d453fe0d4f4f107eb1410c4/filegardener-1.6.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0acd1d0e3a514df62fcae5d2b6605e57", "sha256": "a30b48acdb82985b30b19cd81a4a6c7a7042cab94d3e4592485a3bdacfdd92c3" }, "downloads": -1, "filename": "filegardener-1.6.7.tar.gz", "has_sig": false, "md5_digest": "0acd1d0e3a514df62fcae5d2b6605e57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3480641, "upload_time": "2017-03-26T18:07:59", "url": "https://files.pythonhosted.org/packages/0b/e9/3dad2f08782cf4156b52885cd426a423d66f8d23bd3b74777989bc68e179/filegardener-1.6.7.tar.gz" } ], "1.6.8": [ { "comment_text": "", "digests": { "md5": "a20c267cada0b4bb04b4336a74d5a751", "sha256": "e1c81527b04cf66ea10dfbb328cd58d099d68e652e7810e471fa6bfa8ff74faf" }, "downloads": -1, "filename": "filegardener-1.6.8-py2-none-any.whl", "has_sig": false, "md5_digest": "a20c267cada0b4bb04b4336a74d5a751", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 1730982, "upload_time": "2017-04-01T23:59:44", "url": "https://files.pythonhosted.org/packages/83/3f/d925af9212ddc66531a510ef6622b7089250261a25b51c16217409f25625/filegardener-1.6.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "135e905477bc9193975cfa4576a7e839", "sha256": "edc0712116cbb7745252084a80412ecc62293926cb8b9d896eb6ecf7c8f3cffd" }, "downloads": -1, "filename": "filegardener-1.6.8.tar.gz", "has_sig": false, "md5_digest": "135e905477bc9193975cfa4576a7e839", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3481563, "upload_time": "2017-04-01T23:59:18", "url": "https://files.pythonhosted.org/packages/a9/28/9bbac8a6f04dde240a7dad14de7b4faf3cc972b860eb12d1f3dd89fb30b4/filegardener-1.6.8.tar.gz" } ], "1.6.9": [ { "comment_text": "", "digests": { "md5": "55e7c1f6bfcf9138c94efce28c6b62dc", "sha256": "e50de2c10eafc1b4fb114f5ef942cb5cfebe5cbaaf4fa55944528764f02e11fd" }, "downloads": -1, "filename": "filegardener-1.6.9-py2-none-any.whl", "has_sig": false, "md5_digest": "55e7c1f6bfcf9138c94efce28c6b62dc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 1731275, "upload_time": "2017-04-02T00:13:08", "url": "https://files.pythonhosted.org/packages/a2/7b/c09f75399607c67c2d218a5ecf1864e66dfbf88049c451b929687032d712/filegardener-1.6.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "471a57fa88331e445afa29a0cff0ca40", "sha256": "b6042acddd41bdc7d0ea5c11001481cf66af8a4bf771d3dce89ba2761594e468" }, "downloads": -1, "filename": "filegardener-1.6.9.tar.gz", "has_sig": false, "md5_digest": "471a57fa88331e445afa29a0cff0ca40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3481769, "upload_time": "2017-04-02T00:12:35", "url": "https://files.pythonhosted.org/packages/94/be/6f6fa8cfb67da05a7c548384ade91d4a540977ffb5c14c26fabb8350e4f4/filegardener-1.6.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "55e7c1f6bfcf9138c94efce28c6b62dc", "sha256": "e50de2c10eafc1b4fb114f5ef942cb5cfebe5cbaaf4fa55944528764f02e11fd" }, "downloads": -1, "filename": "filegardener-1.6.9-py2-none-any.whl", "has_sig": false, "md5_digest": "55e7c1f6bfcf9138c94efce28c6b62dc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 1731275, "upload_time": "2017-04-02T00:13:08", "url": "https://files.pythonhosted.org/packages/a2/7b/c09f75399607c67c2d218a5ecf1864e66dfbf88049c451b929687032d712/filegardener-1.6.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "471a57fa88331e445afa29a0cff0ca40", "sha256": "b6042acddd41bdc7d0ea5c11001481cf66af8a4bf771d3dce89ba2761594e468" }, "downloads": -1, "filename": "filegardener-1.6.9.tar.gz", "has_sig": false, "md5_digest": "471a57fa88331e445afa29a0cff0ca40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3481769, "upload_time": "2017-04-02T00:12:35", "url": "https://files.pythonhosted.org/packages/94/be/6f6fa8cfb67da05a7c548384ade91d4a540977ffb5c14c26fabb8350e4f4/filegardener-1.6.9.tar.gz" } ] }