-1
votes

Numérotation séquentielle des fichiers dans différents dossiers tout en gardant le nom après le nombre

J'ai beaucoup de fichiers OGG ou de vagues dans différents dossiers que je veux numéro de séquence tout en gardant tout ce qui se tient derrière le nombre préfixé. L'entrée peut ressembler à cette sortie

find .  | (i=0; while read f; do 
let i+=1; mv "$f" "${f%/*}/$(printf %04d "$i").${f##*.}"; 
done)


1 commentaires

Utilisez Rechercher tout en lisant la boucle avec -print0 | Trier -z Stackoverflow.com/a/37210472


3 Réponses :


2
votes

2 commentaires

J'ai testé votre premier renommant One Dower sans l'exportation C = 0 et cela fonctionnait très bien. La bonne chose est que les deux solutions fonctionnent au dossier de travail: je peux donc exécuter le script sur différents noms de dossiers: qui est très utile car le nom des dossiers contient le nom des travaux que je souhaite numériser avec séquence. Mais il pourrait y avoir plus d'un travail - permet de dire "Hamlet1 ... 4" et "Othello ..1..4" Et comme cela, je peux exécuter le script séparément. Merci beaucoup.


Il est normal que cela fonctionne sans le exporter , car c est créé à Perl. Je modifie la réponse. Merci d'accepter si cela pèse vos besoins en cliquant sur la barre de contrôle (✓) à côté et éventuellement également à la hausse. Si vous avez trouvé d'autres réponses utiles, veuillez les voter. L'acceptation et le droit de vote aide les futurs lecteurs. Veuillez vous reporter à L'article correspondant au centre d'aide



0
votes

La numérotation séquentielle entre les dossiers peut être effectuée avec ce script Bash que j'ai trouvé ici: P> xxx pré>

Mais ce script supprime le titre que je voudrais garder. P> blockquote>


Pas aussi robuste que la réponse acceptée, mais il s'agit de la version améliorée de votre script et de Renommer code> n'est pas disponible. P>

./myscript .


2 commentaires

Mais cela semble contenir le nom du dossier dans le script. Et cela signifie que l'on doit changer le script pour chaque utilisation. M. Nejat Aydin Solution permet d'appeler le nom des dossiers tout en exécutant le script. Ou je manque quelque chose ici?


Merci pour ce merveilleux commentaire, j'ai mis à jour la réponse pour donner au répertoire / chemin d'accès où les fichiers sont comme des arguments.



1
votes

Un script Bash pour ce travail serait le suivant: xxx

et pourrait être exécuté comme xxx

supposant que le script est enregistré comme < Code> renum . Il suffira d'imprimer des noms de fichiers source et de destination. Pour faire le déplacement réel, vous devez laisser tomber le # au début de la ligne # mv -n "$ src" "$ DEST" après avoir assuré qu'il fonctionnera comme prévu . Notez que la commande mv ne remplacera pas un fichier existant en raison de l'option -n . Cela peut être souhaitable ou non. Le script imprimera un message d'avertissement et sauvera des noms de fichiers inattendus, c'est-à-dire les noms de fichiers qui ne correspondent pas au modèle spécifié dans la question.


2 commentaires

Cette version de script fonctionne également de manière aussi pratique: une chose si: est-il possible d'ajuster le paramètre "% 04d" - de manière dynamique au nombre de fichiers? Afin que ce soit "% 04d" pour moins de 10000 "% 03d" pour moins de 1000 "% 02D" pour moins de 100?


@Peterstrawson Oui, j'ai édité le script pour cela. argc est le nombre d'arguments et largeur est le nombre de chiffres décimaux dans argc . Mais cette approche simple peut échouer si des noms de fichier ne correspondent pas au modèle (noms de fichiers qui émettraient le message d'avertissement dans le script) dans la liste des arguments. Le script peut également souffrir de la "liste d'arguments trop longue".