Bash-Skript kann Dateien nicht verschieben

Bash-Skript kann Dateien nicht verschieben

Ich versuche, ein „Hausmeister“-Skript zu schreiben, das als cronJob 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 sudoam 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 777Dateien 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 findAnweisung 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!

verwandte Informationen