J'ai beaucoup de documents sur mon lecteur avec l'extension .odt. Exemple:
Cependant, je trouve que le .odt est gênant lorsque je parcours beaucoup de documents.
J'ai donc réussi à écrire ce script (removeODT.sh):
#!/bin/bash
for file in *.odt
do
mv "$file" "${file%.odt}"
done
Qui supprime l’extension .odt des fichiers .odt du répertoire dans lequel j’exécute le script.
par exemple. Ouvrez le terminal dans ~/Desktop/MyDocuments et tapez
sh /home/user1/BashScripts/removeODT.sh
Cela supprime l'extension .odt de tous les fichiers de MyDocuments.
Mais après la suppression de l'extension, je ne peux plus utiliser les fichiers sur d'autres systèmes d'exploitation ni rechercher dans le contenu du document avec loook
.
Donc, pour remédier à cela, j'ai créé un deuxième script pour ajouter l'extension .odt si nécessaire (addODT.sh):
#!/bin/bash
for file in *
do
mv "$file" "${file%}.odt"
done
J'aimerais maintenant que ces scripts changent chaque document du répertoire parent spécifié et de tous ses sous-répertoires au lieu d'un seul répertoire, comme ils le font maintenant.
par exemple. "Supprimer les extensions .odt des fichiers de Documents et de tous ses sous-dossiers"
Cela me permettrait de modifier tous mes fichiers avec un seul script sans avoir à exécuter le script pour chaque dossier séparément. Mais je suis assez nouveau dans ce domaine, je ne sais donc pas comment m'y prendre.
P.S. Une solution idéale serait de cacher l’extension .odt dans Nautilus mais, autant que je sache, c’est impossible.
Vous pouvez utiliser find
pour parcourir les répertoires de manière récursive.
find -type f -exec mv {} {}.odt \;
Supprimer l'extension est un peu plus problématique:
find -name '*.odt' -exec bash -c 'f={}; mv "$f" "${f%.odt}"' \;
Mais vous pouvez également créer un script pour supprimer l'extension et l'appeler depuis find pour le simplifier:
find -name '*.odt' -exec remove_odt.sh {} \;
Comme vous pouvez le deviner, {}
sera remplacé par le nom de chaque fichier par exec
, le dernier \;
indique l'endroit où la commande à exécuter se termine.
De même, n'utilisez pas sh
pour exécuter bash
les scripts, sh
et bash
sont des bêtes différentes.