Initial commit : dotfiles setup

This commit is contained in:
SeraphimeZelel
2025-09-05 21:07:00 +07:00
parent 1bf3d416ef
commit 5a689e8849
141 changed files with 5346 additions and 0 deletions

72
.script/sort-file.sh Executable file
View File

@@ -0,0 +1,72 @@
#!/bin/bash
# Directory you want to organize (default: current directory)
DIR="${1:-.}"
DIR="$(realpath "$DIR")"
# Ask for confirmation
read -p "Sort the files in $DIR ? [y/N]: " confirm
case "$confirm" in
[yY][eE][sS]|[yY])
echo "Sorting files in $DIR..."
;;
*)
echo "Aborted."
exit 0
;;
esac
# Define groups of extensions
photos=("jpg" "jpeg" "png" "gif" "bmp" "tiff" "webp")
videos=("mp4" "mkv" "avi" "mov" "flv" "wmv" "webm")
documents=("doc" "docx" "odt" "pdf" "txt" "rtf" "xlsx" "xls" "ppt" "pptx" "csv")
compressed=("zip" "tar" "gz" "rar" "7z" "bz2")
audio=("mp3" "wav" "flac" "aac" "ogg" "m4a")
# Create function to check if value in array
in_array() {
local e match="$1"; shift
for e; do [[ "$e" == "$match" ]] && return 0; done
return 1
}
# Loop through files
for file in "$DIR"/*; do
[ -f "$file" ] || continue
ext="${file##*.}"
ext=$(echo "$ext" | tr '[:upper:]' '[:lower:]') # normalize lowercase
target_dir="Others" # default group
if in_array "$ext" "${photos[@]}"; then
target_dir="Media/Photos"
elif in_array "$ext" "${videos[@]}"; then
target_dir="Media/Videos"
elif in_array "$ext" "${documents[@]}"; then
target_dir="Documents"
elif in_array "$ext" "${compressed[@]}"; then
target_dir="Compressed"
elif in_array "$ext" "${audio[@]}"; then
target_dir="Media/Audio"
fi
mkdir -p "$DIR/$target_dir"
# Generate new filename if already exists
base_name="$(basename "$file")"
dest="$DIR/$target_dir/$base_name"
if [ -e "$dest" ]; then
name="${base_name%.*}"
ext_only="${base_name##*.}"
n=1
while [ -e "$DIR/$target_dir/${name}_$n.$ext_only" ]; do
((n++))
done
dest="$DIR/$target_dir/${name}_$n.$ext_only"
fi
mv "$file" "$dest"
echo "Moved: $(basename "$file")$target_dir/$(basename "$dest")"
done