smartfilesorter Documentation

Similar documents
Roman Numeral Converter Documentation

Python wrapper for Viscosity.app Documentation

Python simple arp table reader Documentation

TPS Documentation. Release Thomas Roten

chatterbot-weather Documentation

PyCRC Documentation. Release 1.0

Python Project Example Documentation

Aircrack-ng python bindings Documentation

Simple libtorrent streaming module Documentation

sainsmart Documentation

I2C LCD Documentation

django-idioticon Documentation

Simple Binary Search Tree Documentation

Poulpe Documentation. Release Edouard Klein

Release Nicholas A. Del Grosso

google-search Documentation

Pykemon Documentation

Python Schema Generator Documentation

DNS Zone Test Documentation

Django Wordpress API Documentation

Release Fulfil.IO Inc.

OpenUpgrade Library Documentation

django-reinhardt Documentation

gunny Documentation Release David Blewett

django-cas Documentation

withenv Documentation

Redis Timeseries Documentation

django CMS Export Objects Documentation

Frontier Documentation

doconv Documentation Release Jacob Mourelos

Google Domain Shared Contacts Client Documentation

Poetaster. Release 0.1.1

Python AMT Tools Documentation

django-users2 Documentation

Game Server Manager Documentation

pydrill Documentation

Aldryn Installer Documentation

Python State Machine Documentation

dj-libcloud Documentation

Mantis STIX Importer Documentation

yardstick Documentation

eventbrite-sdk-python Documentation

open-helpdesk Documentation

pyldavis Documentation

API Wrapper Documentation

AnyDo API Python Documentation

Release Ralph Offinger

Python AutoTask Web Services Documentation

e24paymentpipe Documentation

django-telegram-bot Documentation

django-responsive2 Documentation

Python State Machine Documentation

smsghussd Documentation

PyCon APAC 2014 Documentation

Python data pipelines similar to R Documentation

ejpiaj Documentation Release Marek Wywiał

Python Finite State Machine. Release 0.1.5

Job Submitter Documentation

syslog-ng Apache Kafka destination

django-private-chat Documentation

cwmon-mysql Release 0.5.0

gpib-ctypes Documentation

django-stored-messages Documentation

xmljson Documentation

dicompyler-core Documentation

PyZillow Documentation

Dragon Mapper Documentation

Airoscript-ng Documentation

xmodels Documentation

lazy-object-proxy Release 1.3.1

nacelle Documentation

dublincore Documentation

pvl Documentation Release William Trevor Olson

Microlab Instruments Documentation

django-composite-foreignkey Documentation

pytest-benchmark Release 2.5.0

CID Documentation. Release Francis Reyes

OTX to MISP. Release 1.4.2

django-composite-foreignkey Documentation

Gearthonic Documentation

django-bootstrap3 Documentation

Infoblox Client Documentation

invenio-groups Documentation

Connexion Sqlalchemy Utils Documentation

Durga Documentation. Release dev2. transcode

Archan. Release 2.0.1

invenio-formatter Documentation

ProxySQL Tools Documentation

MT940 Documentation. Release Rick van Hattem (wolph)

Release Manu Phatak

redis-lock Release 3.2.0

timegate Documentation

Face Recognition Documentation

otree Virtual Machine Manager Documentation

Regressors Documentation

Lazarus Documentation

mlpy Documentation Release Astrid Jackson

django mail admin Documentation

Pulp Python Support Documentation

ouimeaux Documentation

Transcription:

smartfilesorter Documentation Release 0.2.0 Jason Short September 14, 2014

Contents 1 Smart File Sorter 3 1.1 Features.................................................. 3 2 Installation 5 3 Usage Example 7 3.1 Basic Example.............................................. 7 3.2 Advanced Example............................................ 7 4 Match Plugins 11 4.1 file-extension-is............................................. 11 4.2 filename-contains............................................. 11 4.3 filename-ends-with............................................ 12 4.4 filename-matches............................................. 12 4.5 filename-starts-with........................................... 12 5 Action Plugins 15 5.1 move-to.................................................. 15 5.2 print-file-info............................................... 15 5.3 rename-to................................................. 15 5.4 stop-processing.............................................. 16 6 Contributing 17 6.1 Types of Contributions.......................................... 17 6.2 Get Started!................................................ 18 6.3 Pull Request Guidelines......................................... 18 6.4 Tips.................................................... 19 7 Credits 21 7.1 Development Lead............................................ 21 7.2 Contributors............................................... 21 8 History 23 9 0.2.0 (2014-09-15) 25 10 0.1.0 (2014-09-14) 27 11 Indices and tables 29 i

ii

Contents: Contents 1

2 Contents

CHAPTER 1 Smart File Sorter Rule based file moving and renaming tool Free software: BSD license Documentation: https://smartfilesorter.readthedocs.org. 1.1 Features Moves/renames files based on rules defined in a YAML configuration file. Automatically renames a file if it already exists in the destination directory by appending a sequence number to the filename. (file.txt, file_001.txt, file_002.txt, etc) Easy to extend with new match or action rules 3

4 Chapter 1. Smart File Sorter

CHAPTER 2 Installation At the command line: $ easy_install SmartFileSorter Or, if you have virtualenvwrapper installed: $ mkvirtualenv SmartFileSorter $ pip install SmartFileSorter 5

6 Chapter 2. Installation

CHAPTER 3 Usage Example Basic Example Advanced Example 3.1 Basic Example To use SmartFileSorter, create a rule file. For example: # test.yml - name: Move Logs match: - file-extension-is:.log action: - move-to: /archive Then run the sfp command. In this case, it will process the rules in the test.yml file against every file in the /tmp directory, without actually performing any actions. Assuming there are two files with the.log extension in /tmp (test1.log and test2.log), the output would look like this: $ sfs test.yml /tmp --dry-run Running with --dry-run parameter. Actions will not be performed. Move Logs: test1.log - Match Move Logs: test2.log - Match Files matched: 2/10 And to actually move the files, run without the dry-run parameter: $ sfs test.yml /tmp Move Logs: test1.log - Match Move Logs: test2.log - Match Files matched: 2/10 The two files would be moved to the directory /archive. 3.2 Advanced Example In this example, we ll move and rename log files in the /tmp/ directory in to the /archive/ directory by year. Assume that the log files are named test-yy-mm-dd.log and we want them to be named YYYY-MM-DD.log 7

# test2.yml - name: Move and Rename 2014 Logs match: - filename-starts-with: test-14 - file-extension-is:.log action: - rename-to: match: ^test-14 replace-with: 2014 - move-to: /archive/2014/ - name: Move and Rename 2013 Logs match: - filename-starts-with: test-13 - file-extension-is:.log action: - rename-to: match: ^test-13 replace-with: 2013 - move-to: /archive/2013/ - name: Move and Rename 2012 data match: - filename-starts-with: test-12 - file-extension-is:.log action: - rename-to: match: ^test-12 replace-with: 2012 - move-to: /archive/2012/ Use dry-run to see what files would be affected: $ ls /tmp test-13-05-01.log test-14-01-01.log test-14-01-02.log $ sfs test2.yml /tmp --dry-run Running with --dry-run parameter. Actions will not be performed. Move Logs: test-13-05-01.log - Match Move Logs: test-14-01-01.log - Match Move Logs: test-14-01-02.log - Match Files matched: 3/3 And to actually move the files, run without the dry-run parameter: $ sfs test2.yml /tmp Move Logs: test-13-05-01.log - Match Move Logs: test-14-01-01.log - Match Move Logs: test-14-01-02.log - Match Files matched: 3/3 Here are the results: $ ls -R /archive /archive/2012: /archive/2013: 8 Chapter 3. Usage Example

test-2013-05-01.log /archive/2014: test-2014-01-01.log test-2014-01-02.log 3.2. Advanced Example 9

10 Chapter 3. Usage Example

CHAPTER 4 Match Plugins Match Plugins indicate if a given file matches the rule it defines. For example, if the file has a certain extension, or if the file name starts with a certain character. The available match plugins are: file-extension-is filename-contains filename-ends-with filename-matches filename-starts-with 4.1 file-extension-is Matches if the file s extension is equal to the given extension. Not case sensitive. More than one extension may be given, space separated. match: - file-extension-is:.log.txt Would match: But not: test.log test.txt a.file.with.multiple.periods.txt test.jpg 4.2 filename-contains Matches if the filename (without extension) contains the given string. Not case sensitive. match: - filename-contains: foo Would match: this_file_has_foo.log 11

foo_and_more_foo.log But not: test.jpg test.foo 4.3 filename-ends-with Matches if the filename (without extension) ends with the given string. Not case sensitive. match: - filename-ends-with: bar Would match: But not: foo_and_bar.log bar.log bar_test.jpg test.bar 4.4 filename-matches Matches if the filename (without extension) matches the given regular expression. Is case sensitive unless the regex says otherwise. See https://docs.python.org/3/howto/regex.html for more information on regular expressions. match: - filename-matches: ^\d\d\d\d. Would match: But not: 1234.log 7890_and_other_things.log abc1234.jpg 12.log 4.5 filename-starts-with Matches if the filename (without extension) starts with the given string. Not case sensitive. match: - filename-starts-with: abc Would match: abcdefg.log abc.log 12 Chapter 4. Match Plugins

But not: AbCdEf.txt bcdef.jpg 4.5. filename-starts-with 13

14 Chapter 4. Match Plugins

CHAPTER 5 Action Plugins Action Plugins tell Smart File Sorter what to do with a file if it matches all the rules in that ruleset. For exmaple, rename or move the file. The available action plugins are: move-to print-file-inf_ rename-to stop-processing 5.1 move-to Moves the file to the given directory. If a file with the same name already exists, the current file with have a numbered suffix appended. For example, abc.log would be renamed to abc_001.log. action: - move-to: /archive/ Would move the file to the /archive/ directory. 5.2 print-file-info Prints information on the file. Mostly used for testing. action: - print-file-info 5.3 rename-to In the filename, replaces the match value (a regular expression) with the replace-with value. Is case sensitive action: - rename-to: match: ^\d\d\d\d replace-with: abcd Would change: 15

1234_and_things.txt to abcd_and_things 7980.txt to abcd.txt action: - rename-to: match: XYZ replace-with: 123 Would change: XYZ.txt to 123.txt xyz_and_xyz.txt to xyz_and_xyz.txt 5.4 stop-processing This rule stops all further processing on the current file. action: - stop-processing 16 Chapter 5. Action Plugins

CHAPTER 6 Contributing Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. You can contribute in many ways: 6.1 Types of Contributions 6.1.1 Report Bugs Report bugs at https://github.com/jashort/smartfilesorter/issues. If you are reporting a bug, please include: Your operating system name and version. Any details about your local setup that might be helpful in troubleshooting. Detailed steps to reproduce the bug. 6.1.2 Fix Bugs Look through the GitHub issues for bugs. Anything tagged with bug is open to whoever wants to implement it. 6.1.3 Implement Features Look through the GitHub issues for features. Anything tagged with feature is open to whoever wants to implement it. 6.1.4 Write Documentation SmartFileSorter could always use more documentation, whether as part of the official SmartFileSorter docs, in docstrings, or even on the web in blog posts, articles, and such. 6.1.5 Submit Feedback The best way to send feedback is to file an issue at https://github.com/jashort/smartfilesorter/issues. If you are proposing a feature: 17

Explain in detail how it would work. Keep the scope as narrow as possible, to make it easier to implement. Remember that this is a volunteer-driven project, and that contributions are welcome :) 6.2 Get Started! Ready to contribute? Here s how to set up SmartFileSorter for local development. 1. Fork the SmartFileSorter repo on GitHub. 2. Clone your fork locally: $ git clone git@github.com:your_name_here/smartfilesorter.git 3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development: $ mkvirtualenv smartfilesorter $ cd smartfilesorter/ $ python setup.py develop 4. Create a branch for local development: $ git checkout -b name-of-your-bugfix-or-feature Now you can make your changes locally. 5. When you re done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox: $ flake8 smartfilesorter tests $ python setup.py test $ tox To get flake8 and tox, just pip install them into your virtualenv. 6. Commit your changes and push your branch to GitHub: $ git add. $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature 7. Submit a pull request through the GitHub website. 6.3 Pull Request Guidelines Before you submit a pull request, check that it meets these guidelines: 1. The pull request should include tests. 2. If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst. 3. The pull request should work for Python 2.6, 2.7, 3.3, and 3.4, and for PyPy. Check https://travisci.org/jashort/smartfilesorter/pull_requests and make sure that the tests pass for all supported Python versions. 18 Chapter 6. Contributing

6.4 Tips To run a subset of tests: $ python -m unittest tests.test_smartfilesorter 6.4. Tips 19

20 Chapter 6. Contributing

CHAPTER 7 Credits 7.1 Development Lead Jason Short <jason@sheersky.com> 7.2 Contributors None yet. Why not be the first? 21

22 Chapter 7. Credits

CHAPTER 8 History 23

24 Chapter 8. History

CHAPTER 9 0.2.0 (2014-09-15) Fixed badge link in README.rst Updated documentation with examples and added plugin description and usage examples 25

26 Chapter 9. 0.2.0 (2014-09-15)

CHAPTER 10 0.1.0 (2014-09-14) First release on PyPI. 27

28 Chapter 10. 0.1.0 (2014-09-14)

CHAPTER 11 Indices and tables genindex modindex search 29