2017-10-11 7 views
-1

Je suis tout nouveau pour les scripts shell Unix. J'ai une connaissance de base des commandes et j'essaie d'écrire mon premier script. Le problème: J'ai un dossier d'archives avec une grande quantité de fichiers PDF et DOC. Beaucoup d'entre eux ont à la fois PDF et DOC version par ex. bonjour.doc et bonjour.pdf. Je voudrais supprimer toutes les versions pdf de ces "doublons" avec le même nom de fichier et peu importe si le contenu du fichier est le même ou non. J'ai essayé pendant la semaine passée de chercher une solution mais d'habitude, je n'ai trouvé que des solutions basées sur le contenu du fichier.Unix Shell script pour supprimer les fichiers en double avec le même nom de fichier mais l'extension de fichier différente

Merci beaucoup pour votre aide.

+0

Bienvenue dans StackOverflow! Veuillez consulter les guides sur [comment poser des questions] (https://stackoverflow.com/help/asking), en particulier [comment créer un exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) – AesSedai101

Répondre

1

Vous pouvez essayer quelque chose comme:

for i in *.doc; do 
    pdffile=$(echo "$i"|sed 's/\.doc/\.pdf/') 
    if [[ -f "$pdffile" ]]; then 
    rm "$pdffile" 
    fi 
done 

Ce qui fait: pour chaque fichier doc dans le répertoire courant, est un fichier portant le même nom, mais avec pdf, puis supprimer le fichier pdf.

+0

Merci beaucoup pour la réponse rapide. Je m'excuse pour ma "noobidity". Je comprends que "i" est une variable mais dois-je toujours la déclarer en premier ou puis-je implémenter le code tel quel? – PeterS

+0

@PeterS Vous pouvez exécuter le code tel quel, 'i' est déclaré dans l'instruction' for' – Will

+0

Salut j'ai essayé et toujours obtenir la même erreur :::: rm: impossible de supprimer 'pdffile': aucun fichier ou répertoire de ce type – PeterS