From b9530a5ce0eb727ec9833259f6b939de84d65a7c Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Mon, 19 Aug 2019 23:01:41 +0530 Subject: [PATCH] Plugin organize --- plugins/README.md | 1 + plugins/organize | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100755 plugins/organize diff --git a/plugins/README.md b/plugins/README.md index fc4810c..d666240 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -19,6 +19,7 @@ The currently available plugins are listed below. | ndiff | sh | vimdiff | Diff for selection (limited to 2 for directories) | | nmount | sh | pmount, udisks2 | Toggle mount status of a device as normal user | | nwal | sh | nitrogen | Set the selected image as wallpaper using nitrogen | +| organize | sh | file | Auto-organize files in directories by file type | | pastebin | sh | [pastebinit](https://launchpad.net/pastebinit) | Paste contents of (text) file to paste.ubuntu.com | | pdfview | sh | pdftotext/
mupdf-tools | View PDF file in `$PAGER` | | picker | sh | nnn | Pick files and pipe the newline-separated list to another utility | diff --git a/plugins/organize b/plugins/organize new file mode 100755 index 0000000..3fb34c1 --- /dev/null +++ b/plugins/organize @@ -0,0 +1,53 @@ +#!/usr/bin/env sh + +# Description: Organize files in directories by category +# +# Shell: POSIX compliant +# Author: th3lusive + +organize() { + case "$(file -biL "$1")" in + *video*) + [ ! -d "Videos" ] && mkdir "Videos" + mv "$1" "Videos/$1" + printf "Moved %s to Videos\n" "$1" ;; + + *audio*) [ ! -d "Audio" ] && mkdir "Audio" + mv "$1" "Audio/$1" + printf "Moved %s to Audio\n" "$1" ;; + + *image*) + [ ! -d "Images" ] && mkdir "Images" + mv "$1" "Images/$1" + printf "Moved %s to Images\n" "$1" ;; + + *pdf*|*document*|*epub*|*djvu*|*cb*) + [ ! -d "Documents" ] && mkdir "Documents" + mv "$1" "Documents/$1" + printf "Moved %s to Documents\n" "$1" ;; + + *text*) + [ ! -d "Plaintext" ] && mkdir "Plaintext" + mv "$1" "Plaintext/$1" + printf "Moved %s to Plaintext\n" "$1" ;; + + *tar*|*xz*|*compress*|*7z*|*rar*|*zip*) + [ ! -d "Archives" ] && mkdir "Archives" + mv "$1" "Archives/$1" + printf "Moved %s to Archives\n" "$1" ;; + + *binary*) + [ ! -d "Binaries" ] && mkdir "Binaries" + mv "$1" "Binaries/$1" + printf "Moved %s to Binaries\n" "$1" ;; + esac +} + +main() { + for file in * + do + [ -f "$file" ] && organize "$file" + done +} + +main "$@"