2017-06-28 4 views
0

Ich habe einen Ordner (Ordner A), in dem ich Bilder im Laufe eines Tages hinzufügen.Vergleichen, Entfernen und Hinzufügen von Dateien in einem Ordner

Angenommen, es gibt einen anderen Ordner (Ordner B), in dem Bilder hochgeladen werden sollen.

Ich möchte ein Skript ausführen, das die Dateien in Ordner A und Ordner B vergleicht, die allgemeinen Dateien aus Ordner B entfernt und dem Ordner B keine allgemeinen Dateien hinzufügt. Ich habe Erfahrung mit Shell-Skripten und dachte daran, hier zu fragen .

Danke!

+1

SO ist hier, um mit Code zu helfen, den Sie geschrieben haben, aber SO ist nicht hier, um Code für Sie zu schreiben, noch gibt Ihnen ein Tutorium, wie man das macht. – Rob

Antwort

0

Das folgende iteriert über die Dateien von DIR_A. Jede Datei, die auch in DIR_B (dh eine "gemeinsame Datei") gefunden wird, wird aus DIR_B entfernt. Jede Datei, die nicht in DIR_B gefunden wird (dh eine "nicht übliche Datei") wird zu DIR_B hinzugefügt.

#!/bin/sh 

DIR_A="~/pics" 
DIR_B="~/uploads" 

for pic in `ls $DIR_A`; do 
    if [ -e "$DIR_B/$pic" ]; then 
     rm $DIR_B/$pic 
    else 
     cp $DIR_A/$pic $DIR_B/$pic 
    fi 
done 
+0

Vielen Dank. Entschuldigung - Das sieht so aus, als würde es funktionieren, aber ich habe eine schwache Idee, wie man das benutzt. Soll das als '.sh' Datei gespeichert werden? Ich habe versucht, es als 'backup.sh' auf' Rpi' zu speichern und './ backup.sh' auszuführen. Es gibt mir einen Befehl nicht gefunden Fehler. Am Mac habe ich 'sh backup.sh' und' pics: Keine solche Datei oder Verzeichnis' versucht, während ich 'pics' und' upload' Verzeichnisse erstellt habe und beide ihre Pfade überprüft habe. – Cipher

+0

ja, speichern Sie es als '.sh' Datei. Sobald Sie dies tun, machen Sie es mit 'chmod + x backup.sh' ausführbar. Sie können es dann mit './Backup.sh' ausführen. Sie werden feststellen, dass ich den Shebang oben in der Datei hinzugefügt habe. Das teilt Ihrer Shell mit, welche Binärdatei zum Ausführen der Datei verwendet werden soll (in diesem Fall sh; Sie können sie beispielsweise in bash ändern). – Will

+0

Noch scheint mir 'ls zu geben: kann nicht auf" ~/pics "zugreifen: Keine solche Datei oder Verzeichnis" auf dem Ausführen des '.sh' Skripts sowohl in Mac und Himbeer. – Cipher

Verwandte Themen