Je souhaite renommer tous les fichiers .txt
situés dans un dossier. Ce renom rename tous les .txt
pour moi:
rename 's/\.txt//g' *.txt -v
mais quand je veux renommer tous les sous-dossiers avec
find ./ -type d -execdir rename 's/\.txt//g' *.txt -v ";"
Cela me montre:
Can't rename *.txt *: No such file or directory
Can't rename *.txt *: No such file or directory
...
De plus, find ./ -type -d
me montre correctement tous les sous-dossiers actuels.
Pourquoi j'ai le message No such file or directory
?
Vous devez utiliser la syntaxe -exec
de find
correctement, en utilisant '{}'
pour représenter les fichiers trouvés.
find ./ -type d -name '*.txt' -execdir rename -n 's/\.txt//g' '{}' \;
Supprimez -n
après rename
une fois que vous l'avez testé.
(en supposant que vous vouliez vraiment changer les noms de répertoire et non les noms de fichier normaux - si c'était le cas, utilisez -type f
au lieu de type -d
)