Ich versuche, ein „Hausmeister“-Skript zu schreiben, das als cron
Job in einem bestimmten Verzeichnis ausgeführt wird. Es soll einen Archivordner mit dem Erstellungsdatum im Namen erstellen und dann alle Dateien eines bestimmten Typs finden und in diesen neuen Ordner verschieben.
Hier ist mein Testcode:
#!/bin/bash
today=$(date +'%m:%d:%Y')
target="Archived-$today"
mkdir -p $target
find . -type f -name "*.zip" -exec mv -i {} /$target \;
Es schafft es, den Ordner korrekt zu erstellen, kann die gefundenen Dateien jedoch nicht in den Ordner verschieben. Ich habe dies nur als kleinen Test durchgeführt und sowohl das Skript als auch die Dateien wurden vom selben Benutzer erstellt. Wenn ich sudo
am Anfang etwas hinzufüge, versucht es, die Dateien zu verschieben, aber stattdessen werden die Dateien nur aus dem aktuellen Verzeichnis gelöscht, aber nicht in das neu erstellte Verzeichnis verschoben.
Ich versuche nicht, .zip-Dateien zu verschieben. Nur ein Beispiel.
Ich habe es mit chmod 777
Dateien und Ordnern versucht. Dasselbe passiert.
Ich verwende Ubuntu 14.04 LTS.
Wenn es einen viel besseren Weg gibt, dies zu tun, sagen Sie es mir bitte.
Ich wäre für jeden Hinweis in die richtige Richtung sehr dankbar.
Bearbeiten
Jetzt funktioniert es.
Ich habe die find
Anweisung wie folgt aktualisiert:
find . -maxdepth 1 -type f -name "*.zip" -exec mv -t "$target/" {} \;
Antwort1
Dateien im aktuellen Verzeichnis suchen, nicht im Unterverzeichnis:
find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \;
Methode zum Ausschließen von Verzeichnissen:
find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \;
Beachten Sie, dass dadurch nur das heutige Archiv ausgeschlossen wird, während Sie andere Archive haben. Ich empfehle den ersten Befehl oder erstellen Sie Archivverzeichnisse außerhalb des Hauptverzeichnisses!