nom de fichiers de + de 64 caractères

nom de fichiers de + de 64 caractères - Linux et OS Alternatifs

Marsh Posté le 28-01-2005 à 16:33:21    

Je cherche un script me sortant le nom et l'emplacement de tous les fichiers dont le nom dépasse 64 caractéres. Ces fichiers pouvant être dans une arborescence complexe.
 
 Vous avez une idée pour faire ça ?


---------------
Jotenakis
Reply

Marsh Posté le 28-01-2005 à 16:33:21   

Reply

Marsh Posté le 28-01-2005 à 17:46:32    

Avec find (à creuser), par ex:

Code :
  1. for i in `find / -name "????????????????????????????????????????????????????????????????*"` ; do echo "Fichier :  $i " ; done


Suffit de lancer la commande dans un shell, ou alors éventuellement de le mettre dans un fichier exécutable. Le signe / (racine) peut être remplacée par n'importe quel emplacement de recherche souhaité. Sont alors renvoyé tous les fichier dont le nom fait au minimum 64 caractères (indépendamment de leur extension). La sortie et les résultats de recherche obtenus sont affichés sur l'écran.
 
 
Il peut être utile cependant d'avoir une sortie fichier ; le plus simple est alors de créer un fichier vierge à cet effet (supposons qu'on le crée dans /home/user et qu'il se nomme listfiles.txt) et d'utiliser le script suivant :

Code :
  1. for i in `find / -name "????????????????????????????????????????????????????????????????*.*"` ; do echo "Fichier :  $i " >> /home/user/listfiles.txt ; done


 
 
Y a peut être plus élégant au niveau au niveau du motif de test, mais c'est fonctionnel...  ;)


---------------
THRAK (def.) : 1) A sudden and precise impact moving from intention, direction and commitment, in service of an aim. 2) 117 guitars almost striking the same chord simultaneously.
Reply

Marsh Posté le 28-01-2005 à 17:46:47    

Rechercher le 65 caractère du nom de fichier...
 

#!/bin/sh
 
find . -type f | while read i; do
 
    car65=$(basename $i | cut -c 65)
    [ ! -z $car65  ] && echo $i
 
done


Reply

Marsh Posté le 28-01-2005 à 18:44:54    

le problème du find c'est qu'il sort le nom + le chemin du fichier.


---------------
Jotenakis
Reply

Marsh Posté le 28-01-2005 à 19:57:46    

basename permet de régler le pb en ne gardant que le nom du fichier


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 28-01-2005 à 20:20:52    

en effet.
Je me prends  
basename: Trop de arguments.
Pour en savoir davantage, faites: « basename --help ».
 
avec le script ci-dessus. Ya pas un soucis quand il ya un espace dans le nom ?


---------------
Jotenakis
Reply

Marsh Posté le 28-01-2005 à 20:27:36    

Il faut ajouter des guillemets  
 

Citation :

car65=$(basename "$i" | cut -c 65)


 

Reply

Marsh Posté le 28-01-2005 à 20:30:14    

oups. évidemment.
 
merci bien.


---------------
Jotenakis
Reply

Marsh Posté le 28-01-2005 à 20:33:50    

ça semble impec. Ce script permet de visualiser les fichiers non conforme à la norme joliet. (du moins pour la longueur des fichiers)


Message édité par jotenakis le 28-01-2005 à 20:34:19

---------------
Jotenakis
Reply

Marsh Posté le 28-01-2005 à 23:48:25    

ceric35 a écrit :

Il faut ajouter des guillemets  
 

Citation :

car65=$(basename "$i" | cut -c 65)



 
Effectivement mais dans ce cas, si le 65ème caractère est un espace ça marche pas.
 
Solution: remplacer les espaces du nom de fichier par un autre caractère ("_" )
car65=$(basename "$i" | sed -e 's/\ /_/' | cut -c 65)


Message édité par jdloic le 28-01-2005 à 23:48:54
Reply

Marsh Posté le 28-01-2005 à 23:48:25   

Reply

Marsh Posté le 29-01-2005 à 00:03:41    

On peut aussi tout simplement utiliser la fonction

expr length "chaine"

qui renvoie la longueur d'une chaine  ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed