#1 Le 28/06/2010, à 10:54
- cracolinux
Agir sur des fichiers en fonction de leurs types
Bonjour
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, à 12:34)
Hors ligne
#2 Le 28/06/2010, à 12: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, à 12:23)
--
JJR.
Hors ligne
#3 Le 28/06/2010, à 21:58
- cracolinux
Re : Agir sur des fichiers en fonction de leurs types
merci! j'avance doucement en remplissant mon carnet
Hors ligne
#4 Le 28/06/2010, à 23: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, à 09:52
- cracolinux
Re : Agir sur des fichiers en fonction de leurs types
Tu peux m'expliquer Hizoka ?
merci!
Hors ligne
#6 Le 29/06/2010, à 10: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, à 12: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...
Hors ligne
#8 Le 29/06/2010, à 12: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, à 12:14)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#9 Le 29/06/2010, à 12: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, à 12: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.
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:
Donc, j'ai pas mal de lecture et de testing à faire pour continuer à apprendre.
Dernière modification par cracolinux (Le 29/06/2010, à 12:54)
Hors ligne
#11 Le 29/06/2010, à 15: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, à 17:16
- AnsuzPeorth
Re : Agir sur des fichiers en fonction de leurs types
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, à 19: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.
Hors ligne
#14 Le 29/06/2010, à 20:24
- AnsuzPeorth
Re : Agir sur des fichiers en fonction de leurs types
information sur l'encodage des fichiers n'est pas fiable
bingo
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
Dernière modification par AnsuzPeorth (Le 29/06/2010, à 20: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, à 07: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, à 07:56)
--
JJR.
Hors ligne
#16 Le 30/06/2010, à 08: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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#17 Le 30/06/2010, à 08: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, à 11: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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#19 Le 30/06/2010, à 15: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, à 18: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, à 20:37
- AnsuzPeorth
Re : Agir sur des fichiers en fonction de leurs types
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
PS: Je vois que la confiance règne
Dernière modification par AnsuzPeorth (Le 02/07/2010, à 20: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, à 01: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