]> Sergey Matveev's repositories - nnn.git/commitdiff
Plugin organize
authorArun Prakash Jana <engineerarun@gmail.com>
Mon, 19 Aug 2019 17:31:41 +0000 (23:01 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Mon, 19 Aug 2019 17:31:41 +0000 (23:01 +0530)
plugins/README.md
plugins/organize [new file with mode: 0755]

index fc4810cb88681cc5dba2fdc5f007b7588eb00194..d666240ff4143ba1219f6baeda13ae54c050b317 100644 (file)
@@ -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/<br>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 (executable)
index 0000000..3fb34c1
--- /dev/null
@@ -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 "$@"