[Unix] Besoin d'aide pour commandes de base

Fermé
BobaL - 3 nov. 2006 à 16:58
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 4 nov. 2006 à 19:13
Salut,

Voila j'ai un peut de boulot pour les vacances et j'ai besoin de votre aide...
Ce sont des commandes unix pour exécuter des actions simples mais quelques unes me posent problème :

1- vous désirez regrouper dans un repertoire rangement les fichiers dont le nom contient un caractère minuscule suivi d'un caractère majuscule. Quelle(s) est/sont la/les commande(s) à donner ?

2- idem mais avec les fichiers dont le nom contient 3 voyelles à la suite.

3- en utilisant ls et grep, afficher la liste des fichiers dans /bin dont le nom :
. commence par "a" et dont la deuxième lettre est "s" ou "t";
. contient "un" et se termine par "t".

Ce qui me gène en fait c'est la succession des critères de recherche... j'ai bo chercher impossible de trouver.

Si vous pouvez m'aider... merci beaucoup. ++
A voir également:

4 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
3 nov. 2006 à 17:37
Salut,

1- vous désirez regrouper dans un repertoire rangement les fichiers dont le nom contient un caractère minuscule suivi d'un caractère majuscule.

ls | grep '^[a-z][A-Z]'

2- idem mais avec les fichiers dont le nom contient 3 voyelles à la suite.

ls | grep -E '[aeiouy]{3}'

3- en utilisant ls et grep, afficher la liste des fichiers dans /bin dont le nom :
. commence par "a" et dont la deuxième lettre est "s" ou "t";


ls | grep '^a[st]'

. contient "un" et se termine par "t".

ls | grep -E 'un{1,}t$'
0
Merci mais pour les 2 premiers points la question est différente que pour les 2 suivants...

je voyait plutot un truc dans le genre :
mkdir Rangement/
mv *[a-z][A-Z]* Rangement/

mais ça fonctionne pas...

Merci encore. ++
0
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
3 nov. 2006 à 18:01
mkdir Rangement
for i in $(ls | grep '^[a-z][A-Z]'); do mv "$i" Rangement/ ; done
;-))
0
J'en peux plus... 2 jours de Terminal et j'arrive a rien...

Donc je viens a nouveau faire appel aux bonnes volontés mais cette fois ci c'est du lourd 8-)

1- On ne s'interesse ici qu'à des fichiers contenant un mot par ligne. Ecrire un script qui compte le nombre de mots contenant une des lettres "r", "s" et "t", et parmi eux, ceux qui ont au moins deux telles lettres. On donnera aussi le nombre de mots ne contenant aucune voyelle. Cela donnera par exemple :
"Dans ce fichier vous avez :"
"45 mots contenant "r", "s" et "t", et parmi eux,"
"12 contiennent deux de ces lettres au moins."
"Il y a aussi 10 mots ne contenant aucune voyelle."

2- On veut chercher toutes les occurences des quatre éléments (terre, air, eau, feu) dans la première partie du fichier Germinal.
On veut aussi que le résultat soit placé dans un fichier, et que le résultat soit classé : toutes les lignes qui contiennent "air", puis celles qui contiennent "eau", etc.

3- Chercher le mot "mine" dans les chapitres 3, 4, et 5 de la première partie du fichier germinal, et obtenir un fichier dans lequel figure le nombre d'occurences du mot dans les fichiers, avec le numéro des lignes.

Voilà j'arrête là...

Donc si vous savez faire ça sans forcer, je serais heureux que vous m'aidiez

Merci a toutes les bones volontés. ++
0
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
4 nov. 2006 à 19:13
Salut,

1- On ne s'interesse ici qu'à des fichiers contenant un mot par ligne. Ecrire un script qui compte le nombre de mots contenant une des lettres "r", "s" et "t", et parmi eux, ceux qui ont au moins deux telles lettres. On donnera aussi le nombre de mots ne contenant aucune voyelle. Cela donnera par exemple :
"Dans ce fichier vous avez :"
"45 mots contenant "r", "s" et "t", et parmi eux,"
"12 contiennent deux de ces lettres au moins."
"Il y a aussi 10 mots ne contenant aucune voyelle."

#! /bin/bash

val1=$(egrep -c '(r|s|t)' fichier.txt)

val2=$(egrep -c '(.*r+.*t+.*)|(.*r+.*s+)|(.*s+.*t+)' fichier.txt)

val3=$(egrep -cv '[aeiouy]' fichier.txt)

echo -e "Dans ce fichier vous avez :\n"
echo -e "$val1 mots contenant \"r\", \"s\" et \"t\", et parmi eux,"
echo -e "$val2 contiennent deux de ces lettres au moins."
echo -e "Il y a aussi $val3 mots ne contenant aucune voyelle."

2- On veut chercher toutes les occurences des quatre éléments (terre, air, eau, feu) dans la première partie du fichier Germinal.
On veut aussi que le résultat soit placé dans un fichier, et que le résultat soit classé : toutes les lignes qui contiennent "air", puis celles qui contiennent "eau", etc.

for i in air eau feu terre ; do grep "$i" monfich.txt >> resultat.txt ; done

3- Chercher le mot "mine" dans les chapitres 3, 4, et 5 de la première partie du fichier germinal, et obtenir un fichier dans lequel figure le nombre d'occurences du mot dans les fichiers, avec le numéro des lignes.
grep "mine" texte.txt | sed -e 's/\.//g'  -e 's/\,//g' -e s'/ /\n/g'| grep -c "mine" > sortie.txt && grep -n "mine" texte.txt >> sortie.txt
;-))
0