J'ai récemment créé mon premier script bash, et j'ai du mal à le perfectionner. J'essaye de copier certains dossiers d'un disque local, à un lecteur de réseau. Je rencontre le problème de la suppression des dossiers une fois qu'ils sont copiés, parfois le dossier serait vide de contenu, mais le dossier lui-même resterait, d'autres fois rien ne se passerait du tout. Y at-il un meilleur moyen d'essayer de supprimer des dossiers après que rsync ait fini de copier? J'essayais d'exclure le dossier du live tv buffer, mais vraiment, je peux l'emporter sans conséquence si besoin est.Comment supprimer des dossiers dans bash après une copie réussie (Mac OSX)?
#!/bin/bash
network="CBS"
useracct="tvcapture"
thedate=$(date "+%m%d%Y")
folderToBeMoved="https://stackoverflow.com/users/$useracct/Documents"
newfoldername="/Volumes/Media/TV/$network/$thedate"
ECHO "Network is $network"
ECHO "date is $thedate"
ECHO "source is $folderToBeMoved"
ECHO "dest is $newfoldername"
mkdir $newfoldername
rsync -av $folderToBeMoved/"EyeTV Archive"/*.eyetv $newfoldername --exclude="Live TV Buffer.eyetv"
# this fails when there is more than one *.eyetv folder
if [ -d $newfoldername/*.eyetv ];
then
#this deletes the contents of the directories
find $folderToBeMoved/"EyeTV Archive"/*.eyetv \(! -path $folderToBeMoved/"EyeTV Archive"/"Live TV Buffer.eyetv" \) -delete
#remove empty directory
find $folderToBeMoved/"EyeTV Archive"/*.eyetv -type d -exec rmdir {} \;
fi
Même si OS X prend en charge des commandes majuscules comme ECHO, vous devriez prendre l'habitude d'utiliser les minuscules car aucune autre plate-forme Unix à ma connaissance ne prend en charge les commandes Bash majuscules. –