mirror of
https://github.com/jarun/nnn.git
synced 2024-09-11 13:06:14 +03:00
With this enhancement, plugins which operate on selection can explicitly request the program to clear the selection.
63 lines
1.6 KiB
Bash
Executable File
63 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# Description: Organize files in directories by category
|
|
#
|
|
# Note: This plugin clears the selection as it changes the contents of the current dir
|
|
#
|
|
# Shell: POSIX compliant
|
|
# Author: th3lusive
|
|
|
|
sel=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
|
|
|
|
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
|
|
|
|
# Clear selection
|
|
if [ -s "$sel" ] && [ -p "$NNN_PIPE" ]; then
|
|
printf "-" > "$NNN_PIPE"
|
|
fi
|
|
}
|
|
|
|
main "$@"
|