Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2970 connectés 

 


Dernière réponse
Sujet : nom de fichiers de + de 64 caractères
ceric35 On peut aussi tout simplement utiliser la fonction

expr length "chaine"

qui renvoie la longueur d'une chaine  ;)


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
ceric35 On peut aussi tout simplement utiliser la fonction

expr length "chaine"

qui renvoie la longueur d'une chaine  ;)

jdloic

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)

jotenakis ça semble impec. Ce script permet de visualiser les fichiers non conforme à la norme joliet. (du moins pour la longueur des fichiers)
jotenakis oups. évidemment.
 
merci bien.
ceric35 Il faut ajouter des guillemets  
 

Citation :

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


 

jotenakis 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 ?
Dark_Schneider basename permet de régler le pb en ne gardant que le nom du fichier
jotenakis le problème du find c'est qu'il sort le nom + le chemin du fichier.
jdloic 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


THRAK 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...  ;)

jotenakis 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 ?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)