Simple command line application that copies all files with given extensions from a directory and its subfolders to another directory showing progress bar and remaining files counter.
Allows to preserve a source folder structure, to process only files without given extensions, to move files instead of copying, to exclude certain files from processing and to create a log if necessary.
Opens a filedialog if source and/or destination are not given in the command line.
Creates folders in a destination path if they don't exist.
pip install slcp
slcp ext [ext ...] [-s SRC] [-d DST] [-sc | -dc] [-p] [-i] [-m] [-e FILE [FILE ...]] [-l] [-h] Positional arguments: ext One or more extensions of the files to copy. Enter extensions without a dot and separate by spaces. Optional arguments: -s SRC, --source SRC Source folder path. -d DST, --dest DST Destination folder path. -sc, --srccwd Use current working directory as a source folder. -dc, --dstcwd Use current working directory as a destination folder. -p, --preserve Preserve source folder structure. -i, --invert Process only files without given extensions. -m, --move Move files instead of copying, be careful with this option. -e FILE [FILE ...], Exclude one or more files from processing. --exclude FILE [FILE ...] Enter filenames with extensions and separate by spaces. -l, --log Create and save log to the destination folder. -h, --help Show this help message and exit.
v0.3.0 - 2019-08-22
- Black code style
- The code is now divided into separate modules
- Dots that come with extensions are removed from output folder name. The reason is that folders with a name starting with a dot are considered as hidden on Linux.
- Log saving indication
- Name of the logfile
- Issue when paths like /home/user/test and /home/user/test2 were considered as nested which lead to an error.
v0.2.1 - 2019-07-16
- Changelog
v0.2.0 - 2019-07-15
- Support of processing several extensions at once
- --invert option
- --move option
- --exclude option
This project is licensed under the MIT License - see the LICENSE file for details
Inspired by the task from Chapter 9 of Automate the Boring Stuff.