Hallo Leute,
ich möchte gerne viele PDFs die in einen Ordner kopiert werden, automatisch verschoben haben in
/Jahr/Monat/Datei
Habe z.B. das hier gefunden, aber das funktioniert irgendwie nicht:
#!/bin/bash BASE_DIR="${1}" if [ -z "${BASE_DIR}" ]; then BASE_DIR="/home/Test/Eingang" fi if [ ! -d "${BASE_DIR}" ]; then echo "Error: '${BASE_DIR}' does not exists." >2 exit 1 fi declare -a MONTH_NAMES MONTH_NAMES[1]='JAN' MONTH_NAMES[2]='FEB' MONTH_NAMES[3]='MAR' MONTH_NAMES[4]='APR' MONTH_NAMES[5]='MAY' MONTH_NAMES[6]='JUN' MONTH_NAMES[7]='JUL' MONTH_NAMES[8]='AUG' MONTH_NAMES[9]='SEP' MONTH_NAMES[10]='OCT' MONTH_NAMES[11]='NOV' MONTH_NAMES[12]='DEC' find "${BASE_DIR}" -maxdepth 1 -mtime -90 -type f -iname '*.pdf' \ | grep -e '/[0-9]*.pdf$' \ | while read FILE; do FILENAME="$(basename "${FILE}")" FILE_YEAR="$(echo "${FILENAME}" | cut --bytes=1-4)" FILE_MONTH="$(echo "${FILENAME}" | cut --bytes=5-6)" FILE_MONTH_NAME="${MONTH_NAMES[${FILE_MONTH}]}" REPORT_DIR="${BASE_DIR}/${FILE_YEAR}/${FILE_MONTH_NAME}" test -d "${REPORT_DIR}" || mkdir -p "${REPORT_DIR}" mv "${FILE}" "${REPORT_DIR}" echo "'${FILENAME}' moved to '${REPORT_DIR}'" done
oder das:
#!/bin/bash cd /home/Test/ inotifywait -mrq -e create --format %f /home/Test/Eingang | while read FILE sleep 240 # 4 Min Wartezeit weil bei vielen Scans gleichzeitig inotifywait nicht die neuen PDFs erkennen kann do case $FILE in *.pdf) ocrmypdf -l deu $FILE /home/Test/Eingang/$FILE; ausgang="/home/Test/Ausgang" eingang="/home/Test/Eingang" #datum=$(date +%Y-%m-%d) find "$eingang" -type f -printf "%CY %CB %Cd %f\0" | while read -r -d $'\0' jahr monat tag datei ; do mkdir -p "${ausgang}/${jahr}/${monat}" mv "${eingang}/${FILE}" "${ausgang}/${jahr}/${monat}/${tag}-${FILE}" done esac done
Kann mir bitte jemand helfen? Danke