duupmove.nix (873B)
1 {pkgs, ...}: let 2 duupmove = pkgs.writeShellScriptBin "duupmove" '' 3 4 target_dir="$1" 5 6 if [ -z "$target_dir" ]; then 7 echo "Target directory variable is empty. Please specify a directory, e.g. /mnt/destination/" 8 exit 1 9 fi 10 11 mkdir -p "$target_dir" 12 13 # Pictures 14 for file in *.jpg; do 15 if [[ "$file" =~ ^[0-9]+_[0-9a-f]{32}\.jpg$ ]]; then 16 mv "$file" "$target_dir/" -vin 17 fi 18 if [[ "$file" =~ ^[0-9]{9}_[A-Za-z0-9]{10}\.jpg$ ]]; then 19 mv "$file" "$target_dir/" -vin 20 fi 21 done 22 23 # Videos 24 for file in *.mp4; do 25 if [[ "$file" =~ ^[0-9a-f]{8}-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.mp4$ ]]; then 26 mv "$file" "$target_dir/" -vin 27 fi 28 done 29 30 jdupes "$target_dir" "." -d 31 ''; 32 in { 33 environment.systemPackages = [duupmove]; 34 }