Atsisiuntimų aplanko organizatorius: tvarkinga failų sistema vienu paspaudimu

Ar kada nors jautėtės pasimetę Atsisiuntimų aplanko chaose? Daugelyje iš mūsų kompiuterių šis aplankas tampa laikina saugykla įvairiems failams, nuo dokumentų ir muzikos iki vaizdų ir archyvų. Šiandien pristatau paprastą, bet galingą įrankį, kuris padės suvaldyti šią netvarką ir sutaupyti jūsų laiką.

Kas tai yra?

Tai Bash scenarijus, pavadintas Atsisiuntimų aplanko organizatorius. Jis automatiškai rūšiuoja failus iš Atsisiuntimų aplanko į atitinkamus katalogus pagal jų tipą. Pradžioje, šį scenarijų pasidariau, kad iškeltų .md failus į Obsidian notes, bet vėliau supratęs, kaip tai patogu, patobulinau scenarijų ir dabar surūšiuoja daugybę kitų failų tipų, dažnai sutinkamų Atsisiuntimų aplanke.

Kaip jis veikia?

Scenarijus pirmiausia patikrina, ar Atsisiuntimų aplanke yra .md failų. Jei taip, jis perkelia juos į Obsidian/notes katalogą. Tada jis iškviečia move_files funkciją, kuri apdoroja kitų tipų failus.

move_files funkcija gauna sąrašą plėtinių ir paskirties katalogo kaip argumentus. Ji patikrina, ar yra atitinkamų failų Atsisiuntimų aplanke, ir, jei taip, perkelia juos į paskirties katalogą.

Palaikomi failų tipai:

  • Dokumentai: pdf, doc, docx, epub, txt
  • Muzika: mp3
  • Vaizdo įrašai: avi, mpeg, mp4, mkv
  • Vaizdai: jpg, jpeg, png, gif, webp, svg
  • Archyvai: zip, tar, gzip, bzip2, xz, 7z
bash
#!/bin/bash src_dir="$HOME/Atsiuntimai/" dst_dir="$HOME/Obsidian/notes/" docs_dir="$HOME/Dokumentai/" music_dir="$HOME/Muzika/" video_dir="$HOME/Video/" images_dir="$HOME/Paveikslėliai/" zip_dir="$HOME/Archyvuoti/" if ! ls "$src_dir"/*.md >/dev/null 2>&1; then echo "Nėra .md failų Atsisiuntimų kataloge" else for file in "$src_dir"*.md; do filename="${file%%.*}" dst_file="${dst_dir}$(basename "$filename").md" if [ -f "$dst_file" ]; then echo "Failas $file jau egzistuoja kataloge $dst_dir" else mv "$file" "$dst_file" echo "Perkeltas failas $file į katalogą $dst_dir" fi done fi move_files() { local extensions=("$@") local target_dir="${extensions[-1]}" unset 'extensions[${#extensions[@]}-1]' for ext in "${extensions[@]}"; do shopt -s nullglob files=("$src_dir"/*.$ext) shopt -u nullglob if [ ${#files[@]} -eq 0 ]; then echo "Nėra .$ext failų Atsisiuntimų kataloge" else for file in "${files[@]}"; do if [ -f "$file" ]; then mv "$file" "$target_dir" echo "Perkeltas failas $file į katalogą $target_dir" fi done fi done } move_files "pdf" "doc" "docx" "epub" "txt" "$docs_dir" move_files "mp3" "$music_dir" move_files "avi" "mpeg" "mp4" "mkv" "$video_dir" move_files "jpg" "jpeg" "png" "gif" "webp" "svg" "$images_dir" move_files "zip" "tar" "gzip" "bzip2" "xz" "7z" "$zip_dir"

Komentarai

Populiarūs šio tinklaraščio įrašai

Configuring a NixOS firewall for everyday use

Setting up syncthing as a service on openSUSE and other Linux distributions

Monitoring SFTP server updates with Python