Find + printf + contenu du fichier - Shell/Batch - Programmation
Marsh Posté le 19-10-2010 à 11:17:33
T'as 40000 fichiers dans un répertoire Ton problème à résoudre serait plutôt de ce côté là...
Marsh Posté le 19-10-2010 à 11:25:19
Mouaip, donc en shell
Code :
|
xargs => le paramètre simple n'est pas repérable par apostrophe => quésako ?
ou parfois j'ai : opérande manquante
et je ne vois pas comment supprimer les fichiers ayant pour mtime < 20 par exemple
Marsh Posté le 19-10-2010 à 11:45:02
salut,
avec find, regarde du coté de "-exec"...
genre
Code :
|
je te conseille de faire des echo au début pour pas faire n'imp...
Marsh Posté le 19-10-2010 à 11:52:59
pataluc a écrit : salut,
|
L'option -delete est plus appropriée
Marsh Posté le 19-10-2010 à 11:56:04
roondar a écrit : |
ah ouais correct. J'avais l'habitude d'utiliser -exec pour diverses opération du coup je ne connaissais pas le -delete.
Marsh Posté le 19-10-2010 à 12:03:49
arf il n'existe pas l'inverse de mtime ??
( qui dans ton exemple renvoie les 20 derniers jours ? )
pour rendre le -name case insensitive je fais comment ?
Marsh Posté le 19-10-2010 à 12:09:31
grosbin a écrit : arf il n'existe pas l'inverse de mtime ?? |
pour faire plus de 20 jours => -mtime +20
-name case insensitive => -iname
bref, une bonne lecture de ca devrait t'aider http://pwet.fr/man/linux/commandes/find
Marsh Posté le 19-10-2010 à 12:14:29
ah super merci à vous tous
j'utilise ces fichiers pour les redirections 301 et le mtime compte le nombre de hits sur l'url => redirection
afin d'établir une liste d'occurences les plus nombreuses et accélerer leur temps de traitement
en somme -mtime +1 = de 1970 à - 1 day
mtime -1 = de 1970 au 2 janvier 1970
mtime 1 = de maintenant à -1day
peut-on exprimer cette valeur en timestamp, qui représente ici mon nb de hits ?
Marsh Posté le 19-10-2010 à 12:21:01
Citation : -mtime n |
Marsh Posté le 19-10-2010 à 12:52:19
Superbe j'obtiens un résultat 1000x plus rapide
Dernière question : peut-on trier le résultat de la fonction par filemtime DESC ou ASC ?
Marsh Posté le 19-10-2010 à 12:58:13
Pas à ma connaissance, par contre essayes avec l'option printf
Marsh Posté le 19-10-2010 à 13:07:29
Je suis vraiment gentil
Code :
|
je te laisse adapter
Marsh Posté le 21-10-2010 à 14:06:29
J'ai completé la commande qui me ravit à merveille, merci à tous
Code :
|
Serait-ce possible d'ajouter le contenu du fichier "file_get_contents" à la place de %s ??
et si possible mettre un filtre négatif sur le nom ( * en excluant les fichiers "médias" ?? )
Code :
|
Cette commande exclut les lettres finales lettres par lettres soit : j|p|g|i|f|d|b|l|v => qui n'affiche donc pas les php ( arg )
Marsh Posté le 21-10-2010 à 14:54:30
find . -type f -regextype posix-egrep \! -iregex '.*\.(jpg|gif|bmp|png|swf|mp3|mp4|flv)$' -printf '%T@ %s\n' -exec cat {} \;
Marsh Posté le 21-10-2010 à 16:34:01
:s prédicat invalide : regextype
Marsh Posté le 25-10-2010 à 12:20:04
Tu as sans doute un find ancien, qui ne supporte pas regextype. Ceci devrait coller, non:
find . \( -type f ! -iregex '.*\.(jpg|gif|bmp|png|swf|mp3|mp4|flv)' \) -printf '%T@ %s\n' -exec cat {} \;
au pire la regex est a adapter si la syntaxe ici n'est pas bonne.
A+,
Marsh Posté le 05-11-2010 à 10:11:30
Superbe !! merci gilou ( passe avec les backslashes )
Dernière petite question : pour y associer le sort sur le printf, avec le -exec cat {}, how to do ?
Code :
|
ça ne passe pas encore :s
Marsh Posté le 05-11-2010 à 14:22:38
Il faut peut être utiliser xargs.
A+,
Marsh Posté le 05-11-2010 à 14:29:12
tu m'as super aidé, au risque d'être lourd je ne connais pas la syntaxe de xargs, me semble juste qu'il sert à tunneler une info d'un part et d'autre ..
Marsh Posté le 05-11-2010 à 14:32:49
C'était une réponse un peu bateau, car ceci:
Citation : pour y associer le sort sur le printf, avec le -exec cat {}, how to do ? |
c'est assez flou pour moi. Tu veux faire quoi exactement?
A+,
Marsh Posté le 05-11-2010 à 14:40:24
Code :
|
en fait j'aimerais glisser le résultat de "-exec cat" à la suite de "%p" dans le printf
Mon but initial est de lister par timestamp desc deux types de fichiers, ainsi que leur contenu, pour éviter de passer par le file_get_contents de php à chaque fois
Ces fichiers me servent pour les redirections 301, erreur 404, debugging, bases de données sérialisées ( afin d'alléger la charge de mon serveur )
en passant par le shell, le temps de traitement de certaines infos, grace à tes remarques me fait gagner un temps précieux (x200) environ
Marsh Posté le 05-11-2010 à 14:57:31
Mais que vient faire le sort dans tout cela?
parce que si tu pipes avec sort, -exec n'est plus dans la portée des arguments du find.
A+,
Marsh Posté le 19-10-2010 à 11:10:14
Bonjour, je viens à me demander quelles alternatives préférer à la fonction scandir sur de gros fichiers..
Utiliser cette fonction avec +80000 fichiers .. le simple scandir met 80sec .. et fini par planter
Merci pour vos suggestions .. je pense que passer par le shell est la meilleure option ..
Message édité par grosbin le 05-11-2010 à 12:01:46
---------------
Photos Panoramiques Montagnes Haute Savoie