1
0

adds mover

This commit is contained in:
2024-11-30 16:12:29 +01:00
parent 0e95a798dd
commit b47afc513c
Executable
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
# This script continuously monitors a source directory and moves any files matching the specified extension
# to a destination directory. It checks for new files every interval (default 10 seconds).
# Usage: ./script.sh --source-dir|-s <source_dir> --dest-dir|-d <dest_dir> --extension|-e <extension> [--interval|-i <seconds>]
# Or set MV_SOURCE_DIR, MV_DEST_DIR, MV_EXTENSION and MV_INTERVAL environment variables before running
# Example: ./script.sh -s /home/user/downloads -d /home/user/documents -e "*.pdf" -i 30
while [[ $# -gt 0 ]]; do
case "$1" in
--source-dir|-s) MV_SOURCE_DIR="$2"; shift 2 ;;
--dest-dir|-d) MV_DEST_DIR="$2"; shift 2 ;;
--extension|-e) MV_EXTENSION="$2"; shift 2 ;;
--interval|-i) MV_INTERVAL="$2"; shift 2 ;;
*) echo "Unknown parameter: $1"; exit 1 ;;
esac
done
MV_SOURCE_DIR=${MV_SOURCE_DIR:-$MV_SOURCE_DIR}
MV_DEST_DIR=${MV_DEST_DIR:-$MV_DEST_DIR}
MV_EXTENSION=${MV_EXTENSION:-$MV_EXTENSION}
MV_INTERVAL=${MV_INTERVAL:-10}
if [ -z "$MV_SOURCE_DIR" ] || [ -z "$MV_DEST_DIR" ] || [ -z "$MV_EXTENSION" ]; then
echo "Error: MV_SOURCE_DIR, MV_DEST_DIR and MV_EXTENSION must be provided via environment variables or arguments"
echo "Usage: $0 --source-dir|-s <source_dir> --dest-dir|-d <dest_dir> --extension|-e <extension> [--interval|-i <seconds>]"
echo "Or set MV_SOURCE_DIR, MV_DEST_DIR, MV_EXTENSION and MV_INTERVAL environment variables"
echo "Example: $0 --source-dir /home/user/downloads --dest-dir /home/user/documents --extension *.pdf --interval 30"
echo "Or: export MV_SOURCE_DIR=/home/user/downloads MV_DEST_DIR=/home/user/documents MV_EXTENSION=*.pdf MV_INTERVAL=30"
exit 1
fi
if [ ! -d "$MV_DEST_DIR" ]; then
echo "Error: Destination directory $MV_DEST_DIR does not exist"
exit 1
fi
shopt -s nullglob # This prevents errors when no matches are found
while true; do
for file in "$MV_SOURCE_DIR"/$MV_EXTENSION; do
if [ -f "$file" ]; then
echo "Moving: $file"
mv "$file" "$MV_DEST_DIR"
fi
done
sleep $MV_INTERVAL
done