Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Longueur des fichiers

9 réponses
Avatar
Francois Nospam
Bonjour,

Je cherche à recuperer facilement la longueur du nom de certains de mes
fichiers (ou eventuellement trouver tous les fichiers dont le nom est
plus long que 30 caracteres par exemple)

j'utilise
find . -name "*"
et wc -l

mais avec le -exec je trouve malheureusement que le nomb re de lignes
dans mes fichiers...

Avez vous une iste plus simple?

Merci

9 réponses

Avatar
Stephane Dupille
Bonjour,


Hello,

Je cherche à recuperer facilement la longueur du nom de certains de
mes fichiers (ou eventuellement trouver tous les fichiers dont le nom
est plus long que 30 caracteres par exemple)


OK.

j'utilise
find . -name "*"
et wc -l
mais avec le -exec je trouve malheureusement que le nomb re de lignes
dans mes fichiers...


Avec find :
find . -exec sh -c 'echo {} | wc -c' ";"

Le problème, c'est qu'il compte également le ./ au début du nom de
fichier.

Avez vous une iste plus simple?


Oui, en shell, mais testé uniquement avec zsh (doit marcher avec
d'autres) :
for i in * ; do echo -n $i ": " ; echo $i | wc -c ; done

Chose curieuse chez moi :
[gimli] ~> for i in * ; do echo -n $i ": " ; echo $i | wc -c ; done
Bin : 4
Doc : 4
Gallery : 8
Hotel : 6
Installed : 10
Lib : 4
Mail : 5
News : 5
Photos : 7
Projets : 8
Temp : 5

Pourquoi y a t'il une espace en trop dans les noms de fichiers ?
D'où est-ce qu'elle sort ?

Merci


De rien !

--
OM> Je viens d'être inscrit contre mon gré sur une liste hébergée
OM> par listbot (sexyliens).
Je l'ai reçu aussi, et je me suis fait engueuler par ma femme !!!
-+-CV in <http://www.le-gnu.net> : Les (sexy)liens du mariage -+-

Avatar
Fred

Bonjour,



Hello,


Je cherche à recuperer facilement la longueur du nom de certains de
mes fichiers (ou eventuellement trouver tous les fichiers dont le nom
est plus long que 30 caracteres par exemple)



OK.


j'utilise
find . -name "*"
et wc -l
mais avec le -exec je trouve malheureusement que le nomb re de lignes
dans mes fichiers...



Avec find :
find . -exec sh -c 'echo {} | wc -c' ";"

Le problème, c'est qu'il compte également le ./ au début du nom de
fichier.


Avez vous une iste plus simple?



Oui, en shell, mais testé uniquement avec zsh (doit marcher avec
d'autres) :
for i in * ; do echo -n $i ": " ; echo $i | wc -c ; done

Chose curieuse chez moi :
[gimli] ~> for i in * ; do echo -n $i ": " ; echo $i | wc -c ; done
Bin : 4
Doc : 4
Gallery : 8
Hotel : 6
Installed : 10
Lib : 4
Mail : 5
News : 5
Photos : 7
Projets : 8
Temp : 5

Pourquoi y a t'il une espace en trop dans les noms de fichiers ?
D'où est-ce qu'elle sort ?


C'est pas une espace mais le n de echo.
Il faut aussi utiliser echo -n avant le wc

A+


Merci



De rien !




Avatar
batyann811
for i in * ; do echo -n $i ": " ; echo $i | wc -c ; done
Pourquoi y a t'il une espace en trop dans les noms de fichiers ?
D'où est-ce qu'elle sort ?

C'est sûrement le saut de ligne rajouté par le echo donc je pense qu'il

faut rajouter l'option -n au dernier echo de ta commande.

Sinon j'avais fait ça :

#!/bin/sh

for FILE in `find . -name "*"`
do
FILE=`basename $FILE`
NBCHAR=`echo -n $FILE | wc -c`
echo $FILE : $NBCHAR
done

Avatar
batyann811

Sinon j'avais fait ça :

#!/bin/sh

for FILE in `find . -name "*"`
do
FILE=`basename $FILE`
NBCHAR=`echo -n $FILE | wc -c`
echo $FILE : $NBCHAR
done



Et ça marche pas si les noms de fichiers contiennent des espaces donc
voici la version 0.1beta_alpha_rc_1 :

#!/bin/sh

for FILE in `find . -name '*' -type f`
do
FILE=`basename "$FILE"`
NBCHAR=`echo -n "$FILE" | wc -c`
echo $FILE : $NBCHAR
done

Avatar
Pascal Bourguignon
Francois Nospam writes:
Je cherche à recuperer facilement la longueur du nom de certains de
mes fichiers (ou eventuellement trouver tous les fichiers dont le nom
est plus long que 30 caracteres par exemple)
[...]
Avez vous une iste plus simple?


Ce sont deux questions différentes...
Pour la première:

find . -type f -print | while read nom ; echo "${nom} : ${#nom}" ; done

Pour la seconde:

find . -type f -name '??????????????????????????????*' -print


--
__Pascal Bourguignon__ http://www.informatimago.com/

This is a signature virus. Add me to your signature and help me to live

Avatar
Jean-Louis Liagre
Francois Nospam wrote:
Bonjour,

Je cherche à recuperer facilement la longueur du nom de certains de mes
fichiers (ou eventuellement trouver tous les fichiers dont le nom est
plus long que 30 caracteres par exemple)

j'utilise
find . -name "*"
et wc -l

mais avec le -exec je trouve malheureusement que le nomb re de lignes
dans mes fichiers...

Avez vous une iste plus simple?

Merci


#!/bin/bash
find . -type f | while read i
do
size=$(expr "$(basename "$i")" : '.*')
if [ $size -gt 30 ]
then
echo "$i $size"
fi
done

Avatar
Stephane Dupille
C'est sûrement le saut de ligne rajouté par le echo donc je pense
qu'il faut rajouter l'option -n au dernier echo de ta commande.


AAARRGH ! Le retour chariot m'a tuer.
:)

Sinon j'avais fait ça :
#!/bin/sh
for FILE in `find . -name "*"`


En zsh :
for FILE in **/* ; do

--
Personnelement je lis de haut en bas et de droite à gauche et pas
l'inverse. ?
ac emmoc siavircé'j is tnaihc sap tiares en aC
-+-LS in <http://www.le-gnu.net> fbq, le bon sens loin de chez vous -+-

Avatar
Laurent Wacrenier
Francois Nospam écrit:
Je cherche à recuperer facilement la longueur du nom de certains de mes
fichiers (ou eventuellement trouver tous les fichiers dont le nom est
plus long que 30 caracteres par exemple)

j'utilise
find . -name "*"


find . -name "?????????????????????????????*"

Avatar
Francois Nospam
Francois Nospam écrit:

Je cherche à recuperer facilement la longueur du nom de certains de mes
fichiers (ou eventuellement trouver tous les fichiers dont le nom est
plus long que 30 caracteres par exemple)

j'utilise
find . -name "*"



find . -name "?????????????????????????????*"

Merci beaucoup à tous