2010-08-12 8 views
1

Je souhaite trouver tous les fichiers .docx, et leur ajouter une chaîne. Ceci est mon code actuel, qui a un petit bugTrouver tous les fichiers .docx, ajouter un suffixe avec Bash

find -name '*.docx -execdir mv {} {}$string \; 

fichiers sont renommés, mais chaîne est ajoutée comme celui-ci filename.docx_string et pas comme ça filename_string.docx.

Répondre

2

Cela fera l'affaire et descendra dans les sous-répertoires.

find ./ -name "*.docx" -print | while read i; do mv "$i" `echo "$i" | sed -e 's/\.docx/_stringhere\.docx/'`; done 

La partie sed -e effectuera une substitution regex pour .docx.

+0

pour n'est pas une option, car il ne vérifie pas récursive. Mes fichiers seront dans des sous-dossiers. Va vérifier ce que sed -e ... fait tho! Merci pour votre replay. – krizajb

+0

Modifié pour répondre à vos besoins. – Buggabill

+0

Cela pourrait être une litière de meilleure qualité si vous ancrez l'extension à la fin de la chaîne: 's/\. Docx $/_ stringhere \ .docx/''. Ou vous pouvez utiliser cette variation sur ** ghostdog74 ** [réponse] (http://stackoverflow.com/questions/3468949/find-all-docx-files-add-sufix-with-bash/3469819#3469819): ' mv "$ i" "$ {i /% .docx/$ {chaine} .docx}" ' –

0

Bash 4

shopt -s globstar 
for file in **/*.docx 
do 
    echo mv "$file" "${file%.docx}${string}.docx" 
done 
Questions connexes