Suite

Comment utiliser un caractère générique pour un champ pour trier de nombreux shp

Comment utiliser un caractère générique pour un champ pour trier de nombreux shp


Je souhaite utiliser un caractère générique pour un champ afin de trier un groupe de fichiers de formes.

Tous ont les mêmes colonnes mais il y a une colonne dans chacun d'eux avec seulement les 4 premiers caractères communs.

Existe-t-il une solution pour cela avec python ou avec iterator dans modelbuilder?

J'utilise ArcGIS 10.2 for Desktop.

C'est le code que j'ai écrit jusqu'à maintenant

import arcpy from arcpy import env arcpy.env.workspace = "c:/W/Sik/Point" fcs = arcpy.ListFeatureClasses("EV*", "point") fields = arcpy.ListFields(fcs, "AVGA*", "Double") pour fc dans fcs : pour le champ dans les champs : arcpy.Sort_management(fc, fc_sort, [[fiel, "ASCENDING"]]

Comme l'outil Sort_management crée une table de sortie avec les champs triés, cela devrait être possible… n'oubliez pas qu'en tant que fichier de formes, il ne restera pas trié si vous le modifiez ; la ligne modifiée se déplace à la fin du tableau. D'après la description, l'outil attend une liste de listes (ou de tuples je pense), donc pour trier sur plusieurs lignes, vous devez créer une liste de listes… en python, vous commencez avec une liste vide :

fieldSortList = [] # nouvelle liste vide

Créez ensuite une nouvelle liste et ajoutez-la à la liste existante :

fOpt = [champ,"ASCENDING"] fieldSortList.append(fOpt)

Après quelques itérations, cela ressemble à ceci (une liste de listes):

[[champ,"CROISSANT"],[champ,"CROISSANT"],[champ,"CROISSANT"]]

En mettant ça dans ton code :

import arcpy, os #from arcpy import env# n'en avez pas besoin si vous spécifiez implicitement arcpy.env arcpy.env.workspace = "c:/W/Sik/Point" fcs = arcpy.ListFeatureClasses("EV*" , "point") pour fc dans fcs : fields = arcpy.ListFields(fc, "AVGA*", "Double") # les champs pour cette classe d'entités if fields : # si des champs correspondants ont été trouvés fieldSortList = [] # nouveau vide list # parcourt les champs pour cette classe d'entités # en ajoutant le nom du champ et le type de tri à la liste des champs dans les champs : fOpt = [fiel,"ASCENDING"] fieldSortList.append(fOpt) # crée le nom de sortie, modifiez-le ici pour répondre à vos besoins fc_name,fc_ext = os.path.splitext(fc) # divise le nom/l'extension du fichier en deux variables fc_sort = fc_name + "_sorted" + fc_ext # abc.shp => abc_sorted.shp # fait le tri pour la classe d'entités en sortie arcpy.Sort_management(fc, fc_sort, fieldSortList)

Si je me souviens bien, vous devez utiliser l'opérateur de concaténation "&" sur le symbole générique au lieu de l'inclure avec le reste de votre chaîne. Ceci est spécifique aux fonctions countif et sumif :

EDIT : voici une solution pour les formats de date au lieu des formats de texte :

=COUNTIFS(Pivot_Data[Created Date],">"&DATEVALUE("12/06/2017"),Pivot_Data[Created Date],"<"&(DATEVALUE("12/06/2017")+1) )

Cela fonctionne car la date est représentée sous la forme d'un entier unique dans le codage de date d'Excel, avec l'heure sous forme de valeur décimale.

Placez * de chaque côté de la date. =COUNTIF(E9,"*12/06/2017*")

Il s'agit d'un match générique. Ajustez la portée en fonction des besoins.

Au lieu de rechercher un texte spécifique, je vérifierais simplement si la date est la même que le numéro de série intégré d'Excel. Aussi, je préfère SUMPRODUCT à COUNTIF .

La fonction FLOOR (dans ce cas) prend simplement la date et supprime toute référence à l'heure qu'il est à cette date.

Je pense que cette méthode est meilleure car elle ne repose pas sur le fait que la cellule est un format de texte spécifique.

Voir ci-dessous, j'ai utilisé cette formule mais j'ai remplacé Pivot_Data [Date de création] par A1: A5 juste pour démontrer que cette formule fonctionne avec des exemples de données. Comme prévu, la formule renvoie une valeur de 2 car les données contiennent deux dates le 06/12/2017. Remarquez qu'il ne se soucie pas de l'heure qu'il est.


Recherche de caractères génériques dans Gmail

La fonctionnalité de recherche de Gmail fonctionne sur la base de ce que je décrirais comme jetons. Un jeton est une séquence de caractères alphanumériques séparés par un espace ou par d'autres caractères non alphanumériques tels que le trait de soulignement, le point (point), "@", tiret, etc. Ainsi, dans [email protected], il y a 4 jetons : « pierre », « ford23 », « exemple » et « com ».

Caractères génériques dans les jetons ne fonctionnent pas. Caractères génériques en dehors de les jetons sont inutiles et trompeurs.

Imaginez que vous souhaitiez trouver des messages de [email protected] et que vous ayez essayé ces exemples :

. fonctionnerait, mais est trompeur. Ce n'est pas différent de la recherche de "from:ford23".

Si vous pensiez que Gmail recherchait le symbole "@" immédiatement après "ford23", vous pouvez essayer ceci à la place .

Un exemple donné dans une autre réponse est

. mais encore une fois, Gmail nous induit en erreur par inadvertance. Les caractères tiret et astérisque n'ont aucun effet. (Vous pouvez les supprimer, puis supprimer également les crochets. C'est la même chose que de rechercher "sujet:jefferson".) Il voudrais renvoyer un e-mail avec pour objet "rencontre avec jefferson.jones".

. voudrais ne pas renvoyer un e-mail avec pour objet "jefferson-school"

. voudrais ne pas renvoyer un e-mail avec pour objet "jefferson-school"

Il a été suggéré que regex Perl peut être utilisé. Je n'aborderai pas cette suggestion ici, sauf pour répéter que les caractères génériques dans les jetons ne fonctionnent pas (même en utilisant la syntaxe Perl). Et des jokers en dehors de les jetons sont inutiles et trompeurs.

Avis de non-responsabilité : par souci de concision, j'ai utilisé un langage sans incertitude ci-dessus. Mais je ne travaille pas pour Google et je ne suis pas sûr à 100% de toutes les affirmations de cette réponse. je faire crois que c'est l'une des meilleures réponses à ce jour cependant. La page d'aide des opérateurs de recherche Gmail de Google ne mentionne pas les caractères génériques.


2 réponses 2

Comment LIKE '%123456789 %' bénéficie-t-il de l'indexation ?

Rien qu'un peu. Le processeur de requêtes peut analyse l'ensemble de l'index non cluster à la recherche de correspondances au lieu de la table entière (l'index cluster). Les index non cluster sont généralement plus petits que la table sur laquelle ils sont construits, donc l'analyse de l'index non cluster peut être plus rapide.

L'inconvénient est que toutes les colonnes nécessaires à la requête qui ne sont pas incluses dans la définition d'index non cluster doivent être recherchées dans la table de base, par ligne.

L'optimiseur prend une décision entre l'analyse de la table (index cluster) et l'analyse de l'index non cluster avec des recherches, en fonction des estimations de coûts. Les coûts estimés dépendent dans une large mesure du nombre de lignes que l'optimiseur attend votre prédicat LIKE ou CHARINDEX à sélectionner.

Pourquoi les articles répertoriés indiquent-ils que cela n'améliorera pas les performances ?

Pour une condition LIKE qui fait ne pas commencer par un caractère générique, SQL Server peut effectuer un analyse partielle de l'index au lieu de tout scanner. Par exemple, LIKE 'A% peut être correctement évalué en testant uniquement les enregistrements d'index >= 'A' et < 'B' (les valeurs limites exactes dépendent du classement).

Ce type de requête peut utiliser la capacité de recherche des index b-tree : nous pouvons aller directement au premier enregistrement >= 'A' en utilisant le b-tree, puis parcourir l'avant dans l'ordre des clés d'index jusqu'à ce que nous atteignions un enregistrement qui échoue le < essai « B ». Comme nous n'avons besoin d'appliquer le test LIKE qu'à un plus petit nombre de lignes, les performances sont généralement meilleures.

En revanche, LIKE '%A ne peut pas être transformé en une analyse partielle car nous ne savons pas par où commencer ou terminer un enregistrement pourrait se terminer par 'A' , nous ne pouvons donc pas améliorer l'analyse de l'ensemble de l'index et le test de chaque ligne individuellement.

J'ai essayé de réécrire la requête pour utiliser CHARINDEX , mais les performances sont toujours lentes. Pourquoi CHARINDEX ne bénéficie-t-il pas de l'indexation comme il semble que la requête LIKE le fasse ?

L'optimiseur de requêtes a le même choix entre l'analyse de la table (index cluster) et l'analyse de l'index non cluster (avec recherches) dans les deux cas.

Le choix est fait entre les deux en fonction de estimation du coût. Il se trouve que SQL Server peut produire une estimation différente pour les deux méthodes. Pour la forme LIKE de la requête, l'estimation peut utiliser des statistiques de chaîne spéciales pour produire une estimation raisonnablement précise. Le formulaire CHARINDEX > 0 produit une estimation basée sur une estimation.

Les différentes estimations sont suffisantes pour que l'optimiseur choisisse une analyse d'index en cluster pour CHARINDEX et une analyse d'index non en cluster avec recherches pour le LIKE . Si vous forcez la requête CHARINDEX à utiliser l'index non cluster avec un indice, vous obtiendrez le même plan que pour LIKE et les performances seront à peu près les mêmes :

Le nombre de lignes traitées au moment de l'exécution sera le même pour les deux méthodes, c'est juste que le formulaire LIKE produit une estimation plus précise dans ce cas, donc l'optimiseur de requête choisit un meilleur plan.

Si vous avez souvent besoin de recherches LIKE %thing%, vous pouvez envisager une technique sur laquelle j'ai écrit dans Trigram Wildcard String Search dans SQL Server.


1 réponse 1

La comparaison d'un « personnage » (qui peut être composé de plusieurs points de code : paires de substitution, combinaison de caractères, etc.) à un autre repose sur un ensemble de règles plutôt complexe. C'est si complexe en raison de la nécessité de prendre en compte toutes les règles diverses (et parfois " loufoques ") trouvées dans toutes les langues représentées dans la spécification Unicode. Ce système s'applique aux classements non binaires pour toutes les données NVARCHAR et pour les données VARCHAR qui utilisent un classement Windows et non un classement SQL Server (commençant par SQL_ ). Ce système ne s'applique pas aux données VARCHAR utilisant un classement SQL Server car celles-ci utilisent des mappages simples.

La plupart des règles sont définies dans l'algorithme de collation Unicode (UCA). Certaines de ces règles, et d'autres non couvertes par l'UCA, sont :

  1. L'ordre/le poids par défaut indiqué dans le fichier allkeys.txt (noté ci-dessous)
  2. Quelles sensibilités et options sont utilisées (par exemple, est-il sensible à la casse ou insensible ?
  3. Tout remplacement basé sur les paramètres régionaux.
  4. La version de la norme Unicode est utilisée.
  5. Le facteur "humain" (c'est-à-dire que Unicode est une spécification, pas un logiciel, et est donc laissé à chaque fournisseur pour l'implémenter)

J'ai souligné ce dernier point concernant le facteur humain pour, espérons-le, préciser qu'il ne faut pas s'attendre à ce que SQL Server se comporte toujours à 100% conformément aux spécifications.

Le facteur primordial ici est la pondération donnée à chaque point de code et le fait que plusieurs points de code peuvent partager la même spécification de poids. Vous pouvez trouver les poids de base (pas de remplacements spécifiques aux paramètres régionaux) ici (je crois que la série 100 de classements est Unicode v 5.0 - confirmation informelle dans les commentaires sur l'élément Microsoft Connect):

Le point de code en question &ndash U+FFFD &ndash est défini comme :

Cette notation est définie dans la section 9.1 Format de fichier Allkeys de l'UCA :

Cette dernière ligne est importante car le point de code que nous examinons a une spécification qui commence en effet par "*". Dans la section 3.6 Pondération des variables, quatre comportements possibles sont définis, basés sur des valeurs de configuration de classement auxquelles nous n'avons pas d'accès direct (ceux-ci sont codés en dur dans l'implémentation Microsoft de chaque classement, par exemple si la sensibilité à la casse utilise d'abord les minuscules ou en majuscules d'abord, une propriété qui est différente entre les données VARCHAR utilisant SQL_ Collations et toutes les autres variantes).

Je n'ai pas le temps de faire des recherches complètes sur les chemins empruntés et de déduire quelles options sont utilisées de telle sorte qu'une preuve plus solide puisse être donnée, mais il est sûr de dire que dans chaque spécification de point de code, que quelque chose est considéré comme « égal » ne va pas toujours utiliser la spécification complète. Dans ce cas, nous avons "0F12.0020.0002.FFFD" et très probablement ce ne sont que les niveaux 2 et 3 qui sont utilisés (c'est-à-dire .0020.0002.). Faire un "compte" dans Notepad ++ pour ".0020.0002". trouve 12 581 correspondances (y compris les caractères supplémentaires que nous n'avons pas encore traités). Faire un "Comptage" sur "[*" renvoie 4049 correspondances. Faire un RegEx "Rechercher" / "Compter" en utilisant un modèle de [*d<4>.0020.0002 renvoie 832 correspondances. Donc quelque part dans cette combinaison, plus peut-être d'autres règles que je ne vois pas, plus quelques détails d'implémentation spécifiques à Microsoft, est l'explication complète de ce comportement. Et pour être clair, le comportement est le même pour tous les caractères correspondants car ils se correspondent tous car ils ont tous le même poids une fois les règles appliquées (c'est-à-dire que cette question aurait pu être posée à propos de n'importe lequel d'entre eux, pas nécessairement M. ).

Vous pouvez voir avec la requête ci-dessous et en modifiant la clause COLLATE selon les résultats sous la requête comment les différentes sensibilités fonctionnent entre les deux versions de Collations :

Les différents nombres de caractères correspondants à différents classements sont ci-dessous.

Dans tous les classements répertoriés ci-dessus, N'' = N' ' est également évalué à true.


Introduction

Les balises de langue et les paramètres régionaux sont quelques-uns des éléments fondamentaux de l'internationalisation ( i18n ) du Web. Dans ce document, vous trouverez des définitions pour une grande partie de la terminologie de base liée à cet aspect de l'internationalisation.

Ce document fournit également la terminologie et les meilleures pratiques nécessaires aux auteurs de spécifications pour l'identification des valeurs de langage naturel dans les formats ou les protocoles de documents et qui sont recommandées par le groupe de travail sur l'internationalisation (I18N). Ces bonnes pratiques (et bien d'autres), ainsi que des liens vers des documents d'accompagnement, se trouvent également dans les Bonnes pratiques d'internationalisation pour les développeurs de spécifications [[INTERNATIONAL-SPECS]]. En plus des bonnes pratiques trouvées ici, des bonnes pratiques supplémentaires relatives aux métadonnées de langue sur le Web peuvent être trouvées dans [[STRING-META]].

Dans ce document [[RFC2119]] les mots-clés ont leur signification habituelle. Les meilleures pratiques et définitions sont mises en valeur dans le reste du texte avec une mise en forme spéciale.

Les meilleures pratiques apparaissent avec une couleur d'arrière-plan et une décoration différentes comme celle-ci.

Les définitions apparaissent avec une couleur d'arrière-plan et une décoration différentes comme celle-ci.

Les lacunes ou les recommandations pour les travaux futurs apparaissent avec une couleur d'arrière-plan et une décoration différentes comme celle-ci.

Langues et étiquettes de langue

Les balises permettant d'identifier la langue naturelle du contenu ou les préférences internationales des utilisateurs sont l'un des éléments fondamentaux du Web. Les balises de langue trouvées dans les formats et protocoles Web et Internet sont définies par [[BCP47]]. L'utilisation cohérente des balises de langue permet aux applications d'effectuer un formatage ou un traitement spécifique à la langue. Par exemple, un agent utilisateur peut utiliser la langue pour sélectionner une police appropriée pour l'affichage du texte ou un concepteur de pages Web peut styliser le texte différemment dans une langue par rapport à une autre.

De nombreuses normes de base pour le Web incluent la prise en charge des balises de langue, notamment l'attribut xml:lang dans [[XML10]], les attributs lang et hreflang dans [[HTML]], la propriété language dans [[XSL10]], et la pseudo-classe :lang en CSS [[CSS3-SELECTORS]], et bien d'autres, dont SVG, TTML, SSML, etc.

(ou, dans ce document, juste Langue). Les communications parlées, écrites ou signées utilisées par des êtres humains.

Il existe de nombreuses façons d'identifier les langues et de nombreuses raisons pour lesquelles les logiciels peuvent avoir besoin d'identifier la langue du contenu sur le Web. Les formats de documents et les protocoles sur le Web utilisent généralement les identifiants utilisés dans la plupart des autres parties d'Internet, constitués des balises de langue définies dans [[BCP47]]. La nomenclature « BCP » fait référence à l'ensemble actuel des RFC de l'IETF qui constituent la « meilleure pratique actuelle ».

. Une chaîne utilisée comme identifiant pour une langue. Dans ce document, le terme étiquette de langue fait toujours référence explicitement à une balise de langue [[BCP47]]. Ces balises de langue se composent d'une ou plusieurs sous-étiquettes.

​Les spécifications pour le Web qui nécessitent l'identification de la langue DOIVENT se référer à [[BCP47]].

​Les spécifications NE DEVRAIENT PAS faire référence à des RFC de composants spécifiques de [[BCP47]].

[[BCP47]] est un document en plusieurs parties composé, au moment où ce document a été publié, de deux RFC distincts. La première partie, appelée Balises pour l'identification des langues [[RFC5646]], définit la grammaire, la forme et la terminologie des balises de langue. La deuxième partie, appelée Correspondance des balises de langue [[RFC4647]], décrit plusieurs schémas de mise en correspondance, de comparaison et de sélection de contenu à l'aide de balises de langue et inclut une terminologie utile liée à la comparaison des préférences linguistiques avec le contenu balisé.

�s formulations telles que " RFC 5646 ou son successeur " PEUVENT être utilisées, mais uniquement dans les cas où la version spécifique du document est nécessaire.

Alors que ce style de référence était autrefois populaire, l'utilisation de la référence BCP est plus précise. Étant donné que la grammaire des balises de langue a été corrigée depuis la [[RFC4646]], la référence au BCP n'entraînera pas de risque de conformité supplémentaire pour la plupart des implémentations.

​Les spécifications NE DOIVENT PAS faire référence à des versions obsolètes de [[BCP47]], telles que [[RFC1766]] ou [[RFC3066]].

​Les spécifications qui doivent préserver la compatibilité avec les versions obsolètes de [[BCP47]] DOIVENT référencer la balise de production obs-language-tag dans [[BCP47]].

À partir de la [[RFC4646]], [[BCP47]] a défini une syntaxe plus complexe et lisible par machine pour les balises de langue. Cette syntaxe est stable et ne devrait pas changer dans un avenir prévisible. Certaines spécifications peuvent souhaiter ou nécessiter une compatibilité avec l'ancienne grammaire des balises de langue trouvée dans les versions précédentes de BCP47 (en particulier [[RFC1766]] et [[RFC3066]]). Cette grammaire était plus permissive et est décrite dans [[BCP47]] comme la production ABNF obs-language-tag . La [[RFC4646]], qui a introduit la grammaire actuelle pour les balises de langue, a été remplacée par la [[RFC5646]] dans le cadre de la [[BCP47]] actuelle.

​Les applications qui fournissent des informations de langue dans le cadre des URI (par exemple dans le domaine de RDF) DEVRAIENT utiliser [[BCP47]].

Actuellement, les URI exprimant des informations de langue utilisent souvent des valeurs de parties de l'ISO 639. Cela conduit à des situations dans lesquelles il existe des ambiguïtés sur la valeur appropriée, par ex. pour l'allemand de de ISO 639-1 ou ger de ISO 639-2. En utilisant BCP 47 et son registre de sous-étiquettes de langue, de telles ambiguïtés peuvent être évitées, par ex. pour l'allemand, le registre ne contient que de .

. Une séquence de lettres ou de chiffres ASCII séparés des autres sous-étiquettes par le caractère tiret-moins et identifiant un élément de sens spécifique dans l'étiquette de langue globale. Dans [[BCP47]], les sous-étiquettes peuvent être constituées de lettres ASCII majuscules ou minuscules (la casse ne comporte aucune distinction) ou de chiffres ASCII. Les sous-étiquettes sont limitées à huit caractères maximum (bien que des restrictions de longueur supplémentaires s'appliquent en fonction de l'utilisation spécifique de la sous-étiquette).

La sélection de contenu ou de comportement en fonction de la balise de langue nécessite quelques concepts supplémentaires définis par [[BCP47]] (dans la [[RFC4647]]). Dans ce document, nous adoptons la terminologie suivante tirée directement de [[BCP47]] :

. Un fichier texte lisible par machine disponible via l'IANA qui contient une liste complète de toutes les sous-étiquettes valides dans les étiquettes de langue. (Lien : Registre)

​Les spécifications NE DEVRAIENT PAS référencer les normes sous-jacentes de [[BCP47]] qui contribuent au registre des sous-étiquettes de langue IANA, telles que ISO639, ISO15924, ISO3066 ou UN M.49.

Certaines normes peuvent consommer directement l'une des normes contributives de [[BCP47]], auquel cas une référence est tout à fait appropriée. Cependant, dans la plupart des cas, le but de la référence est de spécifier une liste valide de codes et leurs significations. Le registre de sous-étiquettes de [[BCP47]] est stabilisé et résout l'ambiguïté de plusieurs manières utiles et devrait donc être la source privilégiée pour ce type de référence.

[[BCP47]] définit deux niveaux de conformité différents. Voir les classes de conformité dans [[BCP47]] pour plus de détails. Pour les balises de langue, les niveaux de conformité correspondent au type de vérification qu'une implémentation applique aux valeurs de balise de langue.

. Une balise de langue qui suit la grammaire définie dans [[BCP47]]. C'est-à-dire qu'il est structurellement correct, composé de lettres ASCII et de sous-étiquettes de chiffres de la longueur prescrite, séparés par des tirets.

. Une étiquette de langue qui est bien formée et qui est également conforme aux exigences de conformité supplémentaires dans [BCP47], notamment que chacune des sous-étiquettes apparaisse dans le registre des sous-étiquettes de langue de l'IANA.

​Les spécifications DEVRAIENT exiger que les balises de langue soient bien formées.

​Les spécifications PEUVENT exiger que les balises de langue soient valides.

​Les spécifications DEVRAIENT exiger que les auteurs de contenu utilisent des balises de langue valides.

Notez que cela est plus strict que ce qui est recommandé pour les implémentations.

𠂼ontent les validateurs DEVRAIENT vérifier si le contenu utilise des balises de langue valides lorsque cela est possible.

La vérification de la validité d'une balise nécessite un accès ou une copie du registre ainsi qu'une logique d'exécution supplémentaire. Alors qu'il est conseillé aux auteurs de contenu de choisir, de générer et d'échanger uniquement des valeurs valides, la correspondance des balises de langue et d'autres opérations de balises de langue courantes sont conçues de manière à ce que la vérification de la validité ne soit pas nécessaire. Les caractéristiques ou fonctions qui doivent comprendre le contenu sémantique spécifique des sous-étiquettes sont la principale raison pour laquelle une spécification exigerait normativement des balises valides dans le cadre du protocole ou du format de document.

ou alors extension. Un système de sous-étiquettes supplémentaires [[BCP47]] introduit par une seule lettre ou un seul chiffre enregistré auprès de l'IANA et permettant des types supplémentaires d'identification de la langue.

​Les spécifications PEUVENT référencer les extensions enregistrées à [[BCP47]] si nécessaire.

En particulier, la [[RFC6067]] définit l'extension BCP 47 U , également connue sous le nom de " Unicode Locales ". Cette extension de [[BCP47]] fournit des séquences de sous-étiquettes supplémentaires pour sélectionner des variations locales spécifiques.

​Les spécifications NE DEVRAIENT PAS restreindre la longueur des balises de langue ou autoriser ou encourager la suppression d'extensions.

. Chaîne de structure similaire à une balise de langue utilisée pour « identifier des ensembles de balises de langue partageant des attributs spécifiques ».

. Une collection d'une ou plusieurs plages de langues identifiant les préférences linguistiques de l'utilisateur à utiliser dans la correspondance. Comme son nom l'indique, ces listes sont normalement classées ou pondérées en fonction des préférences de l'utilisateur. L'en-tête HTTP [[RFC2616]] Accept-Language [[RFC3282]] est un exemple d'un type de liste de priorité de langue.

. Une plage de langues constituée d'une séquence de sous-étiquettes séparées par des tirets. C'est-à-dire qu'elle est identique en apparence à une étiquette de langue.

. Une plage de langues constituée d'une séquence de sous-étiquettes séparées par des tirets. Dans une plage de langues étendue, une sous-étiquette peut être une sous-étiquette valide ou la sous-étiquette générique * , qui correspond à n'importe quelle valeur.

Gamme de langues de base et étendue et liste de priorité des langues

La chaîne de-de est une plage de langue de base. Il correspond, par exemple, à la balise de langue de-DE-1996 , mais pas à la balise de langue de-Deva .

La chaîne de-*-DE est une plage de langues étendue. Il correspond à toutes les balises suivantes :

"en fr zh-Hant" est une liste de priorité de langue. Il serait lu comme « l'anglais avant le français avant le chinois tel qu'il est écrit en écriture traditionnelle ». Notez que la syntaxe affichée n'est qu'un exemple, car elle dépend du protocole, de l'application ou de l'implémentation qui utilise la liste.

Certaines listes de priorité de langue, telles que l'en-tête Accept-Language [[RFC3282]] mentionné précédemment, fournissent des "pondérations" pour les valeurs apparaissant dans la liste. Une telle pondération ne peut être invoquée que pour le classement de la liste.

​Les spécifications qui définissent la correspondance d'étiquette de langue ou la négociation de langue DOIVENT spécifier si les plages de langues utilisées sont une plage de langues de base ou une plage de langues étendue.

​Les spécifications qui définissent la correspondance des balises de langue DOIVENT spécifier si les résultats d'une opération de correspondance contiennent un seul résultat (chercher tel que défini dans la [[RFC4647]]), ou un ensemble de résultats éventuellement vide (zéro ou plus) (filtration tel que défini dans la [[RFC4647]]).

​Les spécifications qui définissent la correspondance des balises de langue DOIVENT spécifier les algorithmes de correspondance disponibles et le mécanisme de sélection.

Par exemple, l'internationalisation de JavaScript [[ECMA-402]] et [[CLDR]] fournissent un algorithme « optimal » qui peut être adapté par les implémenteurs.

Localisations et internationalisation

Cette section définit la terminologie de base liée à l'internationalisation et à la localisation.

Les utilisateurs qui parlent différentes langues ou viennent d'horizons culturels différents ont généralement besoin de logiciels et de services adaptés pour traiter correctement les informations en utilisant leurs langues maternelles, systèmes d'écriture, systèmes de mesure, calendriers et autres règles linguistiques et conventions culturelles.

Les balises de langue peuvent également être utilisées pour identifier les préférences internationales associées à un contenu ou à un utilisateur donné, car ces préférences sont liées à la langue naturelle, à l'association régionale ou à la culture de l'utilisateur final. Ces préférences sont appliquées à des processus tels que la présentation de nombres, de dates ou d'heures de tri des listes fournissant linguistiquement des valeurs par défaut pour des éléments tels que la présentation d'un calendrier ou des unités de mesure courantes sélectionnant entre une présentation de 12 heures ou 24 heures et de nombreux autres détails que les utilisateurs pourraient trouver trop fastidieux à définir individuellement. Collectivement, un identifiant pour ces préférences est généralement appelé un paramètre régional. Les extensions de [[BCP47]] qui définissent les paramètres régionaux Unicode [[CLDR]] fournissent la base des API d'internationalisation sur le Web, notamment le langage JavaScript [[ECMASCRIPT]] utilise les paramètres régionaux Unicode comme base pour les API trouvées dans [[ECMA -402]].

Ensemble particulier de préférences linguistiques et de formatage d'un utilisateur et conventions culturelles associées. Le logiciel peut utiliser ces préférences pour traiter ou présenter correctement les informations échangées avec cet utilisateur.

  • Langage naturel pour le traitement de texte, comme l'analyse, la vérification orthographique et la vérification grammaticale
  • Langage de l'interface utilisateur, qui peut inclure des éléments tels que des images, des couleurs, des sons, des formats et des éléments de navigation ainsi que les chaînes de texte visibles
  • Présentation (formatage orienté humain) des dates, heures, nombres, listes et autres valeurs
  • Assemblage, tri et organisation du contenu (comme dans un annuaire téléphonique ou un dictionnaire)
  • Horaires et calendriers alternatifs, qui peuvent inclure les jours fériés, les règles de travail, les distinctions jour de la semaine/week-end, le nombre et l'organisation des mois, la numérotation des années, etc.
  • Régime fiscal ou réglementaire
  • Devise

. La conception et le développement d'un produit adapté à des publics cibles qui varient en termes de culture, de région ou de langue. L'internationalisation est parfois abrégée i18n car il y a dix-huit lettres entre le "I" et le "N" dans le mot anglais.

. L'adaptation d'un système aux attentes culturelles individuelles d'un marché cible spécifique ou d'un groupe d'individus. La localisation comprend, sans s'y limiter, la traduction du texte et des messages destinés à l'utilisateur. La localisation est parfois abrégée en l10n car il y a dix lettres entre le "L" et le "N" dans le mot anglais. Lorsqu'un ensemble particulier de contenus et de préférences correspondant à un ensemble spécifique de préférences internationales est opérationnellement disponible, alors le système est dit être localisé.

. Un identifiant (comme une balise de langue) pour un ensemble de préférences internationales. Habituellement, cet identifiant indique la langue préférée de l'utilisateur et comprend éventuellement d'autres informations, telles qu'une région géographique (comme un pays). Un paramètre régional est transmis dans les API ou défini dans l'environnement d'exploitation pour obtenir un comportement affecté par la culture au sein d'un système ou d'un processus.

(ou alors Activée). Un système qui peut répondre aux changements de paramètres régionaux avec un comportement ou un contenu spécifique à la culture et à la langue. En règle générale, les systèmes internationalisés peuvent prendre en charge un large éventail de paramètres régionaux afin de répondre aux préférences internationales de nombreux types d'utilisateurs.

Les balises de langue peuvent fournir des informations sur la langue, l'écriture, la région et diverses variantes spécialement enregistrées à l'aide de sous-étiquettes. Mais parfois, il existe des préférences internationales qui ne correspondent pas directement à l'une d'entre elles. Par exemple, de nombreuses cultures ont plus d'une façon de trier les éléments de contenu, et l'ordre de tri approprié ne peut donc pas toujours être déduit de la balise de langue elle-même. Ainsi, un utilisateur de langue allemande peut choisir entre l'ordre de tri utilisé dans un dictionnaire et celui utilisé dans un annuaire téléphonique.

Historiquement, les paramètres régionaux étaient associés et spécifiques au langage de programmation ou à l'environnement d'exploitation de l'utilisateur. Ces identifiants spécifiques à l'application peuvent souvent être déduits ou convertis en balises de langue. Certains exemples de modèles de paramètres régionaux incluent Java.util.Locale , POSIX (avec des identifiants tels que [email protected] ), les bases de données Oracle ( AMERICAN_AMERICA.AL32UTF8 ) ou les LCID de Microsoft (qui utilisaient des codes numériques tels que 0x0409 ). La relation entre plusieurs de ces modèles, les normes sous-jacentes telles que ISO639 ou ISO3166, et les premières balises de langue (telles que [[RFC1766]]) était entièrement intentionnelle. Les implémentations ont souvent mappé (et continuent de mapper) les balises de langue d'un protocole existant, tel que l'en-tête Accept-Language de HTTP, vers des modèles de paramètres régionaux propriétaires ou spécifiques à la plate-forme.

Depuis l'adoption de la syntaxe d'identifiant [[BCP47]] actuelle, un certain nombre de modèles de paramètres régionaux ont adopté BCP47 directement ou ont fourni une adaptation ou des mappages entre les modèles propriétaires et les balises de langue. Notamment, le développement et l'adoption du référentiel open source de données locales connu sous le nom de [[CLDR]] a conduit à une adoption générale plus large des balises de langue comme identifiants de localisation.

(ou alors [[CLDR]]). Le Common Locale Data Repository est un projet du Consortium Unicode qui définit, collecte et gère les ensembles de données nécessaires pour activer les paramètres régionaux dans les systèmes ou les environnements d'exploitation. Les données CLDR et son modèle de localisation sont largement adoptés, en particulier dans les navigateurs.

ou alors Paramètres régionaux Unicode. Une balise de langue qui suit les règles et restrictions supplémentaires sur le choix des sous-balises définies dans l'UTR#35 [[LDML]]. Tout identifiant de paramètres régionaux Unicode valide est également une balise de langue [[BCP47]] valide, mais quelques balises de langue valides ne sont pas également des identifiants de paramètres régionaux Unicode valides.

. Une balise de langue bien formée résultant de l'application des règles de canonisation de l'identifiant de locale Unicode trouvées dans [[LDML]] (voir Section 3). Ce processus convertit toute balise de langue [[BCP47]] valide en un identifiant de paramètres régionaux Unicode valide. Par exemple, les sous-étiquettes obsolètes ou les étiquettes irrégulières bénéficiant de droits acquis sont remplacées par leur valeur préférée du registre des sous-étiquettes de langue de l'IANA.

[[CLDR]] définit et maintient deux extensions de balise de langue ([[RFC6067]] et [[RFC6497]]) qui sont liées aux identifiants de paramètres régionaux Unicode. Ces extensions permettent à une étiquette de langue d'exprimer certaines variations de préférences internationales qui vont au-delà des variations linguistiques ou régionales ou de sélectionner un comportement ou un contenu de formatage lorsqu'il existe plusieurs options ou préférences utilisateur dans un paramètre régional donné. Les identifiants de paramètres régionaux Unicode ne sont pas requis pour inclure ces extensions : ils ne sont utilisés que lorsque les paramètres régionaux identifiés nécessitent une personnalisation supplémentaire fournie par l'une de ces extensions. [[CLDR]] applique également une interprétation spécifique de certaines sous-étiquettes lorsqu'elles sont utilisées comme identifiant de paramètres régionaux. Voir la section 3.2 de [[LDML]] pour plus de détails.

Le Extension de balise de langue de paramètres régionaux Unicode [[RFC6067]] utilise la sous-étiquette -u- et fournit des sous-étiquettes pour sélectionner différents formats et comportements basés sur les paramètres régionaux. Voir la section 3.6 de [[LDML]] pour plus de détails.

Le extension de balise de langue de contenu transformé [[RFC6497]], qui utilise la sous-étiquette -t-, fournit des sous-étiquettes pour les transformations de texte, telles que la translittération entre les scripts. Voir la section 3.7 de [[LDML]] pour plus de détails.

Les paramètres régionaux Unicode constituent de plus en plus la base de l'internationalisation sur le Web, en particulier dans le cadre du cadre de paramètres régionaux Intl [[ECMA-402]] en JavaScript [[ECMASCRIPT]].

𠂼ontent les auteurs DEVRAIENT choisir des balises de langue qui sont des identificateurs de paramètres régionaux Unicode canoniques.

Les restrictions de contenu supplémentaires et les étapes de normalisation trouvées dans la section 3 de [[LDML]] assurent une meilleure interopérabilité et cohérence que celles offertes par [[BCP47]] directement.

​Implementations SHOULD only emit language tags that are canonical Unicode locale identifiers and SHOULD normalize language tags that they consume using the rules for producing canonical tags.

As above, the additional content restrictions and normalization steps found in Section 3 of [[LDML]] provide for better interoperability and consistency than that afforded by [[BCP47]] directly. This best practice should not be interpreted as meaning that implementations need to support, generate, process, or understand either of [[CLDR]]'s extensions.

𠂼ontent authors SHOULD NOT include language tag extensions in a language tag unless the specific application requires the additional tailoring.

It is important to remember that every Unicode locale identifier is également a well-formed [[BCP47]] language tag. Unicode locale identifiers do not require the use of either of [[CLDR]]'s language tag extensions.

Some international and cultural preferences are individual and are left to content authors, service providers, operating environments, or user agents to define and manage on behalf of the user.

Here are a few selected examples of Unicode Locale identifiers and the variations associated with them.

In this example, the value 123456789.5678 is formatted using the locale rules represented by the various language tags. Notice how the u extension and its nu keyword are used to select between Latin and Devanagari digit shapes in the Hindi-as-used-in-India ( hi-IN ) locale and between Latin and Arabic script digit shaps in the Arabic ( ar ) locale.

Variation Type Valeur Lieu Formatted Value
Numbering System 123456789.5678 en-US 123,456,789.5678
de 123.456.789,5678
hi-IN-u-nu-latn 12,34,56,789.5678
hi-IN-u-nu-deva १२,३४,५६,७८९.५६७८
ar-u-nu-latn 123,456,789.5678
ar-u-nu-arab ١٢٣٬٤٥٦٬٧٨٩٫٥٦٧٨

In this example, a date value corresponding to 8 October 2020 on the Gregorian calendar is formatted using various different locales. In the tables below we present both the local-language and English ( en ) locale format of the same date value with different corresponding extension sequences supplied. This demonstrates the interplay between different locales and calendars when formatting a locale-neutral date value. Note that the language tag extensions can be applied to any language tag to modify the resulting Unicode locale.

Here are some presentational differences between English, French, and Japanese locales without using language tag extensions (each of which happens to use the Gregorian calendar):

Valeur Lieu Formatted Value
2020-10-08T12:00:00Z fr October 8, 2020
fr 8 octobre 2020
oui 2020�񧂈日

Thailand uses the Thai Buddhist calendar, which can be represented using the extension sequence -u-ca-buddhist . This calendar is similar to the Gregorian calendar, but uses a different year numbering scheme.

Valeur Lieu Formatted Value
2020-10-08T12:00:00Z fr October 8, 2020
th-u-ca-gregory 8 ตุลาคม ค.ศ. 2020
th-u-ca-buddhist 8 ตุลาคม 2563
en-u-ca-buddhist October 8, 2563 BE

In addition to the Gregorian calendar, Japan uses other calendar systems for different cultural or official purposes. One such calendar is the Japanese Imperial calendar denoted by the extension sequence -u-ca-japanese . This calendar is also similar to the Gregorian calendar, but uses a different year numbering scheme.

Valeur Lieu Formatted Value
2020-10-08T12:00:00Z fr October 8, 2020
ja-u-ca-japanese 令񔣂�񧂈日
en-u-ca-japanese October 8, 2 Reiwa

Some countries or cultures use non-Gregorian calendars for official, religious, or cultural purposes. One such calendar is represented by the extension sequence -u-ca-islamic . This particular calendar is based on lunar months and thus 2020-10-08 (Gregorian) corresponds to the 21st day of the 2nd month (called "Safar" when rendered into English). This calendar also uses a different year numbering scheme.

Valeur Lieu Formatted Value
2020-10-08T12:00:00Z fr October 8, 2020
ar-u-ca-islamic ٢١ صفر ١٤٤٢ هـ
en-u-ca-islamic Safar 21, 1442 AH

. Any element of a data structure not intended for the storage or interchange of natural language textual data. This includes non-string data types, such as booleans, numbers, dates, and so forth. It also includes strings, such as program or protocol internal identifiers. This document uses the term domaine as a short hand for this concept.

Specifications for document formats or protocols usually define the exchange, processing, or display of various data values or data structures. The Web primarily relies on text files for the serialization and exchange of data: even raw bytes are usually transmitted using a string serialization such as base64. Thus non-linguistic fields on the Web are also normally made up of strings. The important distinction here is that non-linguistic fields are generally interpreted by or meant for consumption by the underlying application, rather than by a user.

. A non-linguistic field is said to be locale-neutral when it is stored or exchanged in a format that is not specifically appropriate for any given language, locale, or culture and which can be interpreted unambiguously for presentation in a locale aware way.

Many specifications use a serialization scheme, such as those provided by [[XMLSCHEMA11-2]] or [[JSON-LD]], to provide a locale neutral encoding of non-linguistic fields in document formats or protocols.

A locale-neutral representation might itself be linked to a specific cultural preference, but such linkages should be minimized. For example, many of the ISO8601 date/time value serializations are linked to the Gregorian calendar, but the format, field order, separators, and visual appearance are not specifically suitable to any locale (they are intended to be machine readable) and, as shown in the example above, the value can be converted for display into any calendar or locale.

Suppose your application needs to collect and store some value in a field. The system can use a locale-neutral format for storing and exchanging the value. For instance, schema languages such as [[XMLSCHEMA11-2]] or data formats such as [[JSON]] provide ready made types for this purpose. When the user is entering or editing the value, however, the user expects to interact with a more human friendly format. For example, if your application needed to input a user's birth date and the value they were trying to enter were 2020-01-31 :

The input field might look like this in HTML:

The lang attribute here should control the display and formatting of the value, including the expected input pattern. Note that this guidance is at odds with what browsers do at the time this document was published.

Valeur Language Tag Afficher Input Format Pattern
2020-01-31 en-GB 31/01/2020 dd/MM/yyyy
en-US 01/31/2020 MM/dd/yyyy
fr-FR 31-01-2020 dd-MM-yyyy
zh-Hans-CN 2020-01-31 yyyy-MM-dd

. The process of matching a user's international preferences to available locales, localized resources, content, or processing.

. The process of searching for translated content, locale data, or other resources by "falling back" from more-specific resources to more-general ones following a deterministic pattern.

A user's preferences are usually expressed as a locale or prioritized list of locales. When negotiating the language, the system follows some sort of algorithm to get the best matching content or functionality from the available resources. In many cases the language negotiation algorithm uses locale fallback.

​Specifications that present fields in a document format SHOULD require that data is formatted according to the language of the surrounding content.

When non-linguistic fields are presented to the user as part of a document or application, the document or application forms the "context" where the data is being viewed. Content authors or application developers need a way to make the fields seem like a natural part of the experience and need a way to control the presentation. This is indicated by the language tag of the context in which the content appears: usually enabled implementations interpret the tag as a locale in order to accomplish this. Using the runtime locale or localization of the user-agent as the locale for presenting non-linguistic fields should only be a last resort.

​Specifications that present forms or receive input of non-linguistic fields in a document format or application SHOULD require that the values be presented to the user localized in the format of the language of the content or markup immediately surrounding the value.

​Specifications that present, exchange, or allow the input of non-linguistic fields MUST use a locale-neutral format for storage and interchange.

​Implementations SHOULD present non-linguistic fields in a document format or application using a format consistent with the language of the surrounding content and are encouraged to provide controls which are localized to the same locale for input or editing.

Users expect form fields and other data inputs to use a presentation for non-linguistic fields that is consistent with the document or application where the values appear. User's usually expect their input to match the document's context rather than the user-agent or operating environments and input validation, prompting, or controls are also thus consistent with the content. This gives content authors the ability to create a wholly localized customer experience and is generally in keeping with customer expectations.


A shell assignment is a single word, with no space after the equal sign. So what you wrote assigns an empty value to thefile furthermore, since the assignment is grouped with a command, it makes thefile an environment variable and the assignment is local to that particular command, i.e. only the call to ls sees the assigned value.

You want to capture the output of a command, so you need to use command substitution:

(Some literature shows an alternate syntax thefile=`ls …` the backquote syntax is equivalent to the dollar-parentheses syntax except that quoting inside backquotes is weird sometimes, so just use $(…) .)

Other remarks about your script:

Combining -t (sort by time) with -U (don't sort with GNU ls ) doesn't make sense just use -t .

Rather than using grep to match screenshots, it's clearer to pass a wildcard to ls and use head to capture the first file:

It's generally a bad idea to parse the output of ls . This could fail quite badly if you have file names with nonprintable characters. However, sorting files by date is difficult without ls , so it's an acceptable solution if you know you won't have unprintable characters or backslashes in file names.

Always use double quotes around variable substitutions, i.e. here write

Without double quotes, the value of the variable is reexpanded, which will cause trouble if it contains whitespace or other special characters.

You don't need semicolons at the end of a line. They're redundant but harmless.

In a shell script, it's often a good idea to include set -e . This tells the shell to exit if any command fails (by returning a nonzero status).

If you have GNU find and sort (in particular if you're running non-embedded Linux or Cygwin), there's another approach to finding the most recent file: have find list the files and their dates, and use sort and read (here assuming bash or zsh for -d '' to read a NUL-delimited record) to extract the youngest file.


4 réponses 4

An X509 Certificate is a type of public key in a public/private key pair. These key pairs can be used for different things, like encryption via SSL, or for identification. SSL Certificates are a type of X509 certificate. SSL works by encrypting traffic as well as verifying the party (Verisign trusts this website to be who they say they are, therefore you probably could too). Verisign acts as a Certificate Authority (CA). The CA is trusted in that everything that it says should be taken as truth (Running a CA requires major security considerations). Therefore if a CA gives you a certificate saying that it trusts that you are really you, you have a user certificate/client certificate.

Some of these types of certificates can be used across the board, but others can only be used for certain activities.

If you open a certificate in Windows (browse to something over SSL in IE and look at the certificate properties) or run certmgr.msc and view a certificate, look at the Details tab > Key Usage. That will dictate what the certificate is allowed to do/be used for.

For SOAP, the certificate can be used for two things: identification and encryption. Well, three if you include message signatures (message hashing).

Client certificates identify the calling client or user. When the application makes a SOAP request, it hands the certificate to the web service to tell it who is making the request.

In TLS, the server is required to have a private key and a certificate (sometimes known as a server cert). The server cert identifies and authenticates the server. The client may optionally have its own private key and certificate as well (usually called a client cert). If a client cert is used, it identifies and authenticates the client.

On the web, with HTTPS, usually the server has a server cert but client certs are not used. This means that the client can authenticate what server it is talking to, but the server cannot authenticate what client is connecting to it.

However, in many programmatic contexts, you will typically want both endpoints to authenticate each other. Therefore, you will want to use both server certs and client certs.

In TLS, all certificates are X.509 certificates. X.509 is just the format of the data.

Certificates include a public key and a signature from a certificate authority (CA). On the web, typically web sites have a server cert that is issued (signed) by Verisign or some other well-known CA. Web browsers come with a list of almost 100 different CAs, pre-installed, and most widely used web sites have a server cert that is issued by one of those CAs. For instance, Verisign is one of the CAs in every browser's standard list of CAs. Verisign charges you money, if you want them to issue you a cert.

The alternative to getting your cert signed by a standard CA is that you can use a self-signed cert: a cert that is issued, not by one of the standard CAs, but by yourself (or anyone you want). This isn't terribly widely used on the web, because self-signed server certs cause browsers to pop up warning dialog boxes to the user, which most websites try to avoid. However, for programmatic uses, self-signed certs may work fine. And if you use self-signed certs, you don't have to pay Verisign money. You can find tutorials on how to use OpenSSL's command-line tools to create your own self-signed certs.

SSL is a synonym for TLS. (Technically, SSL is the name that was used with several older versions of the standard, and TLS is a new name for several more recent version of the standards. However many people use the two terms interchangeably.)

I encourage you to read the Wikipedia article on public key certificate for more useful background.


1 réponse 1

RIPv2 with the no auto-summary option will advertise the specific routes, not the aggregated prefix, unless you you use the ip summary-address rip interface command.

The network statements in RIP are not specifically telling RIP what prefix(es) to advertise, they tell RIP which interfaces should participate in RIP, and RIP will get the specific prefix(es) from the interface(s) which fall into the network statement. This is true for most routing protocols on Cisco routers, and it is a source of confusion for many people. Par exemple:

The above configuration will run RIP on F0/0 and F0/1 , but not F1/0 . RIP will advertise two routes: 10.1.1.0/24 and 10.2.2.0/24 .

There are Cisco documents, such as Configuring Routing Information Protocol which explain RIP route summarization:

Restrictions to RIP Route Summarization

Supernet advertisement (advertising any network prefix less than its classful major network) is not allowed in RIP route summarization, other than advertising a supernet learned in the routing tables. Supernets learned on any interface that is subject to configuration are still learned. For example, the following summarization is invalid:

Each route summarization on an interface must have a unique major net, even if the subnet mask is unique. For example, the following is not permitted:


Your error message argument list too long comes from the ***** of ls *.txt .

This limit is a safety for both binary programs and your Kernel. See ARG_MAX, maximum length of arguments for a new process for more information about it, and how it's used and computed.

There is no such limit on pipe size. So you can simply issue this command:

NB: On modern Linux, weird characters in filenames (like newlines) will be escaped with tools like ls or find , but still displayed from *****. If you are on an old Unix, you'll need this command

NB2: I was wondering how one can create a file with a newline in its name. It's not that hard, once you know the trick:

It depends mainly on your version of the Linux kernel.

You should be able to see the limit for your system by running

which tells you the maximum number of bytes a command line can have after being expanded by the shell.

In Linux < 2.6.23, the limit is usually 128 KB.

In Linux >= 2.6.25, the limit is either 128 KB, or 1/4 of your stack size (see ulimit -s ), whichever is larger.

See the execve(2) man page for all the details.

Unfortunately, piping ls *.txt isn't going to fix the problem, because the limit is in the operating system, not the shell.

The shell expands the *.txt , then tries to call

and you have so many files matching *.txt that you're exceeding the 128 KB limit.

You'll have to do something like

(And see Shawn J. Goff's comments below about file names that contain newlines.)

Even though ls produces more output than ls *.txt produces (or attempts to produce), it doesn't run into the "argument too long" problem, because you're not passing tout arguments to ls . Note that grep takes a regular expression rather than a file matching pattern.

(assuming your version of ls supports this option). This tells ls not to sort its output, which could save both time and memory -- and in this case the order doesn't matter, since you're just counting files. The resources spent sorting the output are usually not significant, but in this case we already know you have a very large number of *.txt files.

And you should consider reorganizing your files so you don't have so many in a single directory. This may or may not be feasible.


Voir la vidéo: Sairaanhoitopiirin johtajan katsaus COVID-19-epidemian talousvaikutuksiin