En supposant que le fichier fichier « Badfiles » contient une liste de noms de fichiers que vous souhaitez supprimer, et « myDirs » contient une liste des sous-répertoires dans lesquels ils pourraient , les éléments suivants devraient fonctionner:
for file in `cat badFiles`
do
for dir in `cat myDirs`
do
[ -f ${dir}/${file} ] && rm ${dir}/${file}
done
done
Si la liste des répertoires comprend tous les sous-répertoires de votre répertoire de travail courant, alors ce qui suit devrait fonctionner sans créer le fichier myDirs:
for file in `cat badFiles`
do
for dir in *
do
[ -d ${dir} ] && [ -f ${dir}/${file} ] && rm ${dir}/${file}
done
done
Pour appeler cela via SSH, vous pouvez mettre le contenu du script ci-dessous dans un fichier (dans cet exemple, je vais utiliser l'emplacement $ {HOME} /bin/killImages.sh):
Modifier ~ /bin/killImages.sh et utilisez le contenu ci-dessous. Une fois terminé, écrivez et sauvegardez.
#!/bin/bash
cd $1
for file in `cat ~/badFiles`
do
for dir in *
do
[ -d ${dir} ] && [ -f ${dir}/${file} ] && rm ${dir}/${file}
done
done
Faites ensuite votre script exécutable:
chmod 700 ~/bin/killImages.sh
ensuite sur votre système local, Execute:
ssh <user>@<hostname> "bin/killImages.sh /path/to/base/html"
Si vous devez télécharger manuellement la liste des mauvais fichiers d'abord, vous feriez simplement scp ceci en place avant de lancer le script:
scp badFiles <user>@<hostname>:.
ssh <user>@<hostname> "bin/killImages.sh /path/to/base/html"
Espérons que cela aide.
On dirait que ça va essayer! – blablaman4000
quel type de fichier est badFiles. Est-ce un fichier .txt un par ligne d'autre chose? @ paul-h – blablaman4000
Si tous les fichiers correspondent au modèle "image *" ou "image * jpg", alors j'irais avec la suggestion de Lucian de tirer parti de find. Oui, ceci traversera tous les sous-répertoires. Si ce n'est pas ce que vous voulez (vous voulez seulement un niveau plus profond que le répertoire de départ) cela peut être contrôlé avec le drapeau -depth. –