A voir également:
- Extension script
- Script vidéo youtube - Guide
- Extension dat - Guide
- Extension .bin - Guide
- Changer extension fichier - Guide
- Extension 7z - Guide
6 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
16 oct. 2009 à 16:20
16 oct. 2009 à 16:20
Salut,
Donc :
;-))
[tmpfs]$ var="fichier.txt" [tmpfs]$ echo ${var} fichier.txt [tmpfs]$ echo ${var##*.} txt [tmpfs]$
Donc :
if [ "${var##*.}" = "txt" ]; then...
;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 oct. 2009 à 17:12
16 oct. 2009 à 17:12
Salut,
# Compte tous les fichiers .txt
Et comme ça, ce n'est pas bon?
# Compte tous les fichiers .txt
Et comme ça, ce n'est pas bon?
$ nbrtxt=$(find ./trash2 -type f -name '*.txt' 2>/dev/null| wc -l) $ echo $nbrtxt 6
Merci pour vos réponses rapides, j'apprécie. J'ai du laisser passer le WE pour les tester :)
@jipicy : la chaine déclenche une erreur : substitution incorrecte. Es tu sur de la syntaxe pour un shell sh ?
@lami20j : je souhaite exécuter un traitement sur chaque fichier et un particulier sur les txt et pas seulement les compter.
@jipicy : la chaine déclenche une erreur : substitution incorrecte. Es tu sur de la syntaxe pour un shell sh ?
@lami20j : je souhaite exécuter un traitement sur chaque fichier et un particulier sur les txt et pas seulement les compter.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
19 oct. 2009 à 10:37
19 oct. 2009 à 10:37
Re-
Normalement il ne devrait pas y avoir de problème ;-\
Pour la commande de lami20j, il suffit de rajouter le paramètre "-exec" suivi de la commande adéquate... par exemple :
ou encore avec "xargs" :
Quel genre de traitement dois-tu exécuter sur chaque fichier ?
Normalement il ne devrait pas y avoir de problème ;-\
Pour la commande de lami20j, il suffit de rajouter le paramètre "-exec" suivi de la commande adéquate... par exemple :
find ./trash2 -type f -name '*.txt' -exec stat -c '%n : %A' {} \;
ou encore avec "xargs" :
find ./trash2 -type f -name '*.txt' | xargs stat-c '%n : %A
Quel genre de traitement dois-tu exécuter sur chaque fichier ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Comment fonctionne ton masque ? car je n'arrive pas à trouver d'exemple dans mon bouquin sur les scripts. Les caractères génériques sont * ou ? pour moi et à priori pas d'utilisation de {}.
Quand aux traitements, j'aimerais faire un grep et un sed.
Merci pour l'aide.
Comment fonctionne ton masque ? car je n'arrive pas à trouver d'exemple dans mon bouquin sur les scripts. Les caractères génériques sont * ou ? pour moi et à priori pas d'utilisation de {}.
Quand aux traitements, j'aimerais faire un grep et un sed.
Merci pour l'aide.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
19 oct. 2009 à 13:19
19 oct. 2009 à 13:19
Ouvre la page de man de sh et cherche "Parameter Expansion" :
Quand a ton traitement, l'expression initiée par lami20j me parait la plus adaptée en remplaçant "wc" par "sed" (qui regroupe les fonctionnalités de "grep")...
Parameter Expansion The format for parameter expansion is as follows: ${expression} where expression consists of all characters until the matching `}'. Any `}' escaped by a backslash or within a quoted string, and characters in embedded arithmetic expansions, command substitutions, and variable expansions, are not examined in determining the matching `}'. The simplest form for parameter expansion is: ${parameter} The value, if any, of parameter is substituted. The parameter name or symbol can be enclosed in braces, which are optional except for positional parameters with more than one digit or when parameter is followed by a character that could be interpreted as part of the name. If a parameter expansion occurs inside double-quotes: 1. Pathname expansion is not performed on the results of the expansion. 2. Field splitting is not performed on the results of the expansion, with the exception of the special parameter @. In addition, a parameter expansion can be modified by using one of the following formats. ${parameter:-word} Use Default Values. If parameter is unset or null, the expansion of word is substituted; otherwise, the value of parameter is sub- stituted. ${parameter:=word} Assign Default Values. If parameter is unset or null, the expan- sion of word is assigned to parameter. In all cases, the final value of parameter is substituted. Only variables, not posi- tional parameters or special parameters, can be assigned in this way. ${parameter:?[word]} Indicate Error if Null or Unset. If parameter is unset or null, the expansion of word (or a message indicating it is unset if word is omitted) is written to standard error and the shell exits with a nonzero exit status. Otherwise, the value of parameter is substituted. An interactive shell need not exit. ${parameter:+word} Use Alternate Value. If parameter is unset or null, null is sub- stituted; otherwise, the expansion of word is substituted. In the parameter expansions shown previously, use of the colon in the format results in a test for a parameter that is unset or null; omission of the colon results in a test for a parameter that is only unset. ${#parameter} String Length. The length in characters of the value of parameter. The following four varieties of parameter expansion provide for substring processing. In each case, pattern matching notation (see Shell Patterns), rather than regular expression notation, is used to evaluate the patterns. If parameter is one of the special parameters * or @, the result of the expansion is unspecified. Enclosing the full parameter expansion string in double-quotes does not cause the following four vari- eties of pattern characters to be quoted, whereas quoting characters within the braces has this effect. ${parameter%word} Remove Smallest Suffix Pattern. The word is expanded to produce a pattern. The parameter expansion then results in parameter, with the smallest portion of the suffix matched by the pattern deleted. ${parameter%%word} Remove Largest Suffix Pattern. The word is expanded to produce a pattern. The parameter expansion then results in parameter, with the largest portion of the suffix matched by the pattern deleted. ${parameter#word} Remove Smallest Prefix Pattern. The word is expanded to produce a pattern. The parameter expansion then results in parameter, with the smallest portion of the prefix matched by the pattern deleted. ${parameter##word} Remove Largest Prefix Pattern. The word is expanded to produce a pattern. The parameter expansion then results in parameter, with the largest portion of the prefix matched by the pattern deleted.
Quand a ton traitement, l'expression initiée par lami20j me parait la plus adaptée en remplaçant "wc" par "sed" (qui regroupe les fonctionnalités de "grep")...
Ok merci pour l'extraction man :) C'est là que je vois que je n'ai pas encore les bons reflexes unix.
La solution de lami20j semble effectivement plus efficae en travaillant sur des ensembles plutot que sur une revue 1 par 1 mais je voulais faire une imbrication de if fi pour tester. donc je veux d'avbord faire marcher avec test et ensuite je le modifierais pour optimiser.
Je vais continuer avec ton ## et je te tiens au courant.
Merci pour l'aide en tout cas.
La solution de lami20j semble effectivement plus efficae en travaillant sur des ensembles plutot que sur une revue 1 par 1 mais je voulais faire une imbrication de if fi pour tester. donc je veux d'avbord faire marcher avec test et ensuite je le modifierais pour optimiser.
Je vais continuer avec ton ## et je te tiens au courant.
Merci pour l'aide en tout cas.