staging.inyokaproject.org

Neue Dateien automatisch verschieben und umbennenen

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

BrunoFischer

Avatar von BrunoFischer

Anmeldungsdatum:
4. März 2013

Beiträge: 57

Hallo!

Ich nutze die 16.04.4 LTS (Server)

Auf diesem sind Samba Shares eingerichtet. Der Kopierer legt nun seine Scans darauf ab.

wie kann es es erreichen, dass ein dokument wenn es mit einer ziffer X beginnt nach dem erfolgreichen scan in einen bestimmten ordner gelegt wird

Scan order lautet

/home/ablagen/kopie

das dokument wird gescannt Dateiname "1_irgendwas.pdf" oder "1 foo.pdf"

dieses soll dann, nachdem der scan erfolgreich war, nach

/var/www/user_data/1 verschoben werden...

weiteres beispiel 323_test_scan.pdf nach /var/www/user_data/323

Danke!

Bearbeitet von sebix:

Bitte wähle in Zukunft einen aussagekräftigen Titel!

Moderiert von sebix:

Thema in einen passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.

Mokkujin

Anmeldungsdatum:
2. Mai 2008

Beiträge: 389

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Dazu gibt es auch hier im Wiki einen Artikel.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

BrunoFischer schrieb:

[…] wie kann es es erreichen, dass ein dokument wenn es mit einer ziffer X beginnt nach dem erfolgreichen scan in einen bestimmten ordner gelegt wird

  1. Sorge dafür, dass die Scan-Software keine Dateinamen mit Whitespace erzeugt. Also kein Leerzeichen, kein Tabulator, keinen Zeilenvorschub und auch keinen Wagenrücklauf in den Dateinamen verwendet.

  2. Erstelle ein Skript, welches alle regulären Dateien in einem Verzeichnis, deren Dateinamen einem von Dir festgelegtem Muster entsprechen, durch Verschieben in ein anderes Verzeichnis umbenennt. Ungefähr (ungestestet und unvollständig!) so:

    #! /bin/sh -e
    SOURCE=…
    TARGET=…
    MUSTER=…
    cd /$SOURCE
    for Datei in $MUSTER
    do
      test -f "$Datei" && mv "$Datei" "$TARGET/$( echo $Datei | cut -d '_' -f1 )"
    done
  3. Teste dieses Skript, bis es im manuellen Aufruf genau das macht, was Du beabsichtigst und Du es verstanden hast.

  4. Rufe das Skript periodisch, z.B. jede Minute auf. Das kannst Du per Endlos-Schleife oder per Cron oder (moderner) mit einer systemd-timer-Unit lösen.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@kB: cd würde ich nicht verwenden. Man müsste mindestens den Fall abfangen dass das nicht funktioniert, denn dann werden plötzlich in einem anderen Verzeichnis Dateien verschoben/umbenannt.

Das Skript geht so auch überhaupt gar nicht auf die Bedingung „nach dem erfolgreichen scan“ ein. Es würde auch mitten beim scannen die Datei verschieben, was mindestens bei unterschiedlichen Dateisystemen für Quelle und Ziel Probleme machen wird.

BrunoFischer

(Themenstarter)
Avatar von BrunoFischer

Anmeldungsdatum:
4. März 2013

Beiträge: 57

Hallo!

@selbix Danke für das Verschieben

Ich habe es jetzt wie folgt erledigt:

mit der systemctl habe ich ein Dienst gestartet

dieser wird 5 sekunden nach dem mysql.service gestartet.

es wird ein PHP-script aufgerufen. in dem Script prüfe ich die für mich relevaten daten ab, und verschicke automatisch die datei per eMail.

und das klappt ganz gut.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

Marc_BlackJack_Rintsch schrieb:

@kB: cd würde ich nicht verwenden. Man müsste mindestens den Fall abfangen dass das nicht funktioniert

Diesen Fall habe ich berücksichtigt. Wenn cd fehlschlägt, wird mein Skript-Fragment wegen der Option -e sofort beendet.

[…] Das Skript geht so auch überhaupt gar nicht auf die Bedingung „nach dem erfolgreichen scan“ ein.

Es soll ja auch keine vollständige Lösung sein (Ich schrieb: „Ungetestet und unvollständig!“), sondern nur eine Anregung, wie der Fragesteller seine eigene Lösung entwickeln könnte.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

kB schrieb:

Diesen Fall habe ich berücksichtigt. Wenn cd fehlschlägt, wird mein Skript-Fragment wegen der Option -e sofort beendet.

Ich verwende dazu lieber ein Statement set -e anstatt es in die Shebang-Zeile zu packen. Dann funktioniert es nämlich auch, wenn man das Script mit einer anderen Shell ausführt oder direkt sh das_script angibt.

Antworten |