Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/06/2010, à 11:54

cracolinux

Agir sur des fichiers en fonction de leurs types

Bonjour smile

Je suis en train d'écrire un script bash pour renommer des fichiers à la chaine.

Le script appelé renomme (placé dans un répertoire  du PATH) fonctionne ainsi:

renomme [partie_commune_du nom] [extension]

le problème et que mon script va renommer tout ce qui se trouve dans le répertoire, si je veux renommer des fichiers txt et que des mp3 sont ici aussi, il seront renommés également.

Je voudrais donc agir sur les fichiers en fonction du type de fichier (et pas de l'extension puisqu'elle n'a pas d'importance réelle).

Comment faire ça ?
Merci du coup de main que vous pourrez m'apporter!


Voici le script pour le moment:

#!/bin/bash

#test sur les arguments de départ

if (( $# != 2 )); then
echo "arguments manquants : renomme [nom commun] [extension]"
sleep 3s ; exit
else

nomcommun="$1"
extension="$2"

fi


declare -i a=1

for i in $(ls)
 
do

#systeme index 001 002 etc
if (( $a >= 1 ))
then
b=00
fi

if (( $a >= 10 ))
then
b=0
fi

if (( $a >= 100 ))
then
b=''
fi
#fin systeme index


mv "$i" "$nomcommun$b$a.$extension"
((a=a+1))
done

[edit : ortho]

Dernière modification par cracolinux (Le 28/06/2010, à 13:34)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#2 Le 28/06/2010, à 13:03

gigiair

Re : Agir sur des fichiers en fonction de leurs types

Tu peux utiliser la commande find en conjonction avec file pour sélectionner les fichiers qui t'intéressent.

info finding files
man file

Pour plus de détails.
La commande rename est sans doute intéressante aussi à exploiter.

man rename

Par exemple

find . -type f -exec file -i '{}' \;|egrep  :.*image/ |cut -d: -f1

liste tous les fichiers de l'arborescence courante dont le type mime contient image

Dernière modification par gigiair (Le 28/06/2010, à 13:23)


--
JJR.

Hors ligne

#3 Le 28/06/2010, à 22:58

cracolinux

Re : Agir sur des fichiers en fonction de leurs types

smile

merci! j'avance doucement en remplissant mon carnet big_smile


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#4 Le 29/06/2010, à 00:47

Hizoka

Re : Agir sur des fichiers en fonction de leurs types

en effet ton sript n'apportera pas grand chose...

une boucle et pis voilou :

while read ligne
do
 rename .....
done < <(find . -iname "*.${1}")

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 29/06/2010, à 10:52

cracolinux

Re : Agir sur des fichiers en fonction de leurs types

Tu peux m'expliquer Hizoka ?
merci!


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#6 Le 29/06/2010, à 11:23

Hizoka

Re : Agir sur des fichiers en fonction de leurs types

find . -iname "*.${1}

recherche dans le dossier ou tues tous les fichiers de type $1 (soit l'argument que tu rentres) sans tenir compte de la casse.

while read ligne

boucle traitant le résultat du find ligne par ligne

rename....

ta commande pour renommer tes fichiers

donc si ton script s'appelle rename_craco (et qu'il est dans le path comme /usr/bin), tu te mets dans ton dossier à traiter, tu tape rename_craco txt pour traiter tous les fichiers txt.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#7 Le 29/06/2010, à 13:05

cracolinux

Re : Agir sur des fichiers en fonction de leurs types

hum je vois, mais avec ce système je détecte pas les fichiers sans extensions...


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#8 Le 29/06/2010, à 13:12

Hizoka

Re : Agir sur des fichiers en fonction de leurs types

le problème et que mon script va renommer tout ce qui se trouve dans le répertoire, si je veux renommer des fichiers txt et que des mp3 sont ici aussi, il seront renommés également.

tu ne parlais pas de ça en même temps....

explique ce que tu veux faire exactement.

car on peut toujours rentrer un case...

Je voudrais donc agir sur les fichiers en fonction du type de fichier (et pas de l'extension puisqu'elle n'a pas d'importance réelle).

la ca complique bcp....
car il faudrait faire passer des tests aux fichiers, du style, on essaie d'ouvrir le fichier avec imagemagick, si il reconnait une image on s'arrete sinon, on essai avec mkvmerge...on essaie avec..

Dernière modification par Hizoka (Le 29/06/2010, à 13:14)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#9 Le 29/06/2010, à 13:26

AnsuzPeorth

Re : Agir sur des fichiers en fonction de leurs types

Bjr,
utilisez la commande file comme l'a proposé gigiair


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#10 Le 29/06/2010, à 13:41

cracolinux

Re : Agir sur des fichiers en fonction de leurs types

Ben, oui c'est bien ce que je suis en train d'apprendre à faire.
Je crois qu'Hizoka n'avait pas trop compris, mais c'est pas grave merci quand même. wink

Des que j'ai trouvé une solution a peu près propre, je la posterai
Il me faut juste du temps pour bien comprendre ce que je fais et lire la doc etc..

@Ansuz

J'ai trouvé l'ABS traduit en français, en pdf. Merci à ta signature, c'est juste qu'il m'a fallu des semaines pour me rendre compte qu'il y avait lien vers un pdf...:rolleyes: smile
Donc, j'ai pas mal de lecture et de testing à faire pour continuer à apprendre.

Dernière modification par cracolinux (Le 29/06/2010, à 13:54)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#11 Le 29/06/2010, à 16:05

Hizoka

Re : Agir sur des fichiers en fonction de leurs types

putain ! je la connaissais pas cette commande !!! Trop bien !!!


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#12 Le 29/06/2010, à 18:16

AnsuzPeorth

Re : Agir sur des fichiers en fonction de leurs types

Hizoka a écrit :

putain ! je la connaissais pas cette commande !!! Trop bien !!!

Attention qd même, cette commande n'est pas fiable à 100% ... A ce qu'on dit !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#13 Le 29/06/2010, à 20:35

Watael

Re : Agir sur des fichiers en fonction de leurs types

AnsuzPeorth

tu veux dire que toutes les options de la commande ne sont pas POSIX,
ou que l'information sur l'encodage des fichiers n'est pas fiable ?


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#14 Le 29/06/2010, à 21:24

AnsuzPeorth

Re : Agir sur des fichiers en fonction de leurs types

information sur l'encodage des fichiers n'est pas fiable

bingo smile
A ce qu'on en dit bien sur ! (et pis j'ai déjà pu m'en rendre compte)
Mais par exemple, un fichier oOo, on a juste data,donc on est pas plus avancé, et pour l'encodage, n'en parlons pas, c'est un sujet trop vaste smile

Dernière modification par AnsuzPeorth (Le 29/06/2010, à 21:29)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#15 Le 30/06/2010, à 08:55

gigiair

Re : Agir sur des fichiers en fonction de leurs types

Je ne sais pas d'ou tu tiens cette information, mais j'ai créé deux documents openoffice et voici ce que renvoie les commande file et file -i, sous Debian/testing

debjjr@zoe:~$ file mimetest.ods mimetest.odt
mimetest.ods: OpenDocument Spreadsheet
mimetest.odt: OpenDocument Text
debjjr@zoe:~$ file -i  mimetest.ods mimetest.odt
mimetest.ods: application/vnd.oasis.opendocument.spreadsheet; charset=binary
mimetest.odt: application/vnd.oasis.opendocument.text; charset=binary

Dernière modification par gigiair (Le 30/06/2010, à 08:56)


--
JJR.

Hors ligne

#16 Le 30/06/2010, à 09:01

nesthib

Re : Agir sur des fichiers en fonction de leurs types

et bien justement, file ne détecte pas l'encodage des fichiers xml constituant le document openoffice, simplement l'encodage de l'archive zip servant de conteneur, soit un fichier binaire…


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#17 Le 30/06/2010, à 09:15

gigiair

Re : Agir sur des fichiers en fonction de leurs types

Je ne comprends pas trop ce que tu veux dire. Les informations fournies par la commande file me paraissent parfaitement claires et permettent d'identifier l'origine du fichier sans aucune ambiguïté.
En tout cas, c'est un peu plus précis que 'data'


--
JJR.

Hors ligne

#18 Le 30/06/2010, à 12:53

nesthib

Re : Agir sur des fichiers en fonction de leurs types

ok pour le type de fichier, je parlais de l'encodage des caractères


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#19 Le 30/06/2010, à 16:38

AnsuzPeorth

Re : Agir sur des fichiers en fonction de leurs types

Je ne sais pas d'ou tu tiens cette information

Ben je la tiens de mes essais .... Je parle jamais en l'air (quoique ...:))
Donc ca confirme bien ce que je disais, ce n'est pas fiable à 100%, car chez moi, les fichiers oOo ne donne que data comme info !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#20 Le 30/06/2010, à 19:24

Hizoka

Re : Agir sur des fichiers en fonction de leurs types

tu peux nous en filer 1 qu'on teste ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#21 Le 02/07/2010, à 21:37

AnsuzPeorth

Re : Agir sur des fichiers en fonction de leurs types

Hizoka a écrit :

tu peux nous en filer 1 qu'on teste ?

Il faudra attendre le mois d'aout, je ne suis pas sur mon pc jusqu'a cette date smile

PS: Je vois que la confiance règne big_smile

Dernière modification par AnsuzPeorth (Le 02/07/2010, à 21:48)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#22 Le 03/07/2010, à 02:02

Hizoka

Re : Agir sur des fichiers en fonction de leurs types

hé hé, toujours voir par soi même


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne