Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 27/06/2011, à 23:05

Hizoka

Re : [resolu] liste fichier : contraire de */

au mieux j'arrive à :

IFS=$'\n' liste=($(find "${PWD}" -maxdepth 1 -type f) Exit)
select fichier in ${liste[@]}
do
[[ ${fichier} == Exit ]] && return || break
done

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#27 Le 28/06/2011, à 01:30

Postmortem

Re : [resolu] liste fichier : contraire de */

Bonsoir !
Hizoka, je sais pas si tu as fait gaffe mais si tu fais comme ça, faut que tu sauvegardes l'ifs d'origine car j'ai l'impression qu'il est modifié dans le script et pas seulement pour l'affectation de la variable liste :

$ liste=($(find "${PWD}" -maxdepth 1 -type f) Exit)
$ select fichier in ${liste[@]}
> do
> [[ ${fichier} == Exit ]] && return || break
> done
1) /home/xxxxxx/test2/fic        3) /home/xxxxxx/test2/fic  5) /home/xxxxxx/test2/fic  7) Exit
2) 01                    4) 02                    6) 03
#? 1

$ IFS=$'\n' liste=($(find "${PWD}" -maxdepth 1 -type f) Exit)
$ select fichier in ${liste[@]}
> do
> [[ ${fichier} == Exit ]] && return || break
> done
1) /home/xxxxxx/test2/fic 01  3) /home/xxxxxx/test2/fic 03
2) /home/xxxxxx/test2/fic 02  4) Exit
#? 2

$ liste=($(find "${PWD}" -maxdepth 1 -type f) Exit)
$ select fichier in ${liste[@]}
> do
> [[ ${fichier} == Exit ]] && return || break
> done
1) /home/xxxxxx/test2/fic 01  3) /home/xxxxxx/test2/fic 03
2) /home/xxxxxx/test2/fic 02  4) Exit
#? 3

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#28 Le 28/06/2011, à 06:16

Hizoka

Re : [resolu] liste fichier : contraire de */

en effet...

je pensais pourtant que ca n'affectait que la commande non ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#29 Le 28/06/2011, à 06:26

gerarmentor

Re : [resolu] liste fichier : contraire de */

Hizoka a écrit :

et pourquoi cet IFS ?

Le caractère null (\0) est le seul caractère interdit dans un chemin de fichier des systèmes de fichiers unix/linux (interdit également en NTFS et FAT*).

Quand tu utilises un saut de ligne pour séparer les noms ou chemins de fichier, tu ajoutes un bug à ton programme.

Hors ligne

#30 Le 28/06/2011, à 08:34

Sciensous

Re : [resolu] liste fichier : contraire de */

je ne sais pas si ça à évolué alors:

i=0; for f in `ls`; do if [ -f "$f" ]; then liste[$i]="$f"; i=$((i+1)); fi; done; liste[$i]="Exit";

puis le

select fichier in ${liste[@]}
do
[[ ${fichier} == Exit ]] && return || break
done

surement il est possible d'optimiser le 1er code


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#31 Le 28/06/2011, à 09:10

Postmortem

Re : [resolu] liste fichier : contraire de */

Hizoka a écrit :

en effet...

je pensais pourtant que ca n'affectait que la commande non ?

Bonjour !
Mais là, ce n'est pas une commande, liste=($(find "${PWD}" -maxdepth 1 -type f) Exit) est une affectation de variable (enfin de tableau là). Donc, on définie la variable IFS et le tableau liste pour l'environnement courant.
Par exemple, dans le cas suivant, il n'y a pas besoin de sauvegarder l'ifs car read est bien une commande :

while IFS=';' read titi toto
do
echo "$toto : $titi"
done < un_fic.txt

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#32 Le 28/06/2011, à 10:12

FRUiT

Re : [resolu] liste fichier : contraire de */

Sciensous a écrit :
i=0; for f in `ls`

surement il est possible d'optimiser le 1er code

En effet...
http://mywiki.wooledge.org/ParsingLs

then liste[$i]="$f"; i=$((i+1)); fi; done

C'est laborieux... Tu peux faire

liste+=( "$f" )

Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#33 Le 28/06/2011, à 12:08

Watael

Re : [resolu] liste fichier : contraire de */

Salut,

sans oublier les guillemets
select choix in "${tableau[@]}"; do


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#34 Le 28/06/2011, à 12:57

Sciensous

Re : [resolu] liste fichier : contraire de */

merci FRUIT smile

serait-ce mieux:

for f in *; do if [ -f "$f" ]; then liste+=( "$f" ); fi; done; liste+=( "Exit"); 

antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#35 Le 28/06/2011, à 13:42

Hizoka

Re : [resolu] liste fichier : contraire de */

for f in *; do [[ -f "${f}" ]] && liste+=( "$f" ); done; liste+=( "Exit");

peut le faire en effet.

sinon un demi dieu me parlait de ceci :

# liste les dossiers présents dans une variable
dossiers="$(compgen -o dirnames)"
# GLOBIGNORE permet de lister les fichier à ne pas afficher
GLOBIGNORE="${dossiers//$'\n'/:}"
for i in *; do echo "$i"; done
> free.pdf
> x264.pdf

mer reste plus qu'a choisir smile

merci à vous.

PS : il n'en reste pas moins, que c'est dommage qu'il n'y ai rien de prévu...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#36 Le 15/08/2011, à 06:48

Hizoka

Re : [resolu] liste fichier : contraire de */

il existe :

Fichiers=( $dir/* )

qui crée une liste dans la variable Fichiers ne contenant que les fichiers.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#37 Le 15/08/2011, à 13:14

Watael

Re : [resolu] liste fichier : contraire de */

...dans le sens où les répertoires sont des fichiers.

Dernière modification par Watael (Le 15/08/2011, à 13:15)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#38 Le 15/08/2011, à 18:32

Hizoka

Re : [resolu] liste fichier : contraire de */

en effet... j'ai repris une connerie, j'avais pas testé en choppant ça sur le net...

désolé.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#39 Le 18/08/2011, à 11:24

Plastivore

Re : [resolu] liste fichier : contraire de */

Est-ce que ça serait bon comme ça ?

$ find -maxdepth 1 -type d
.
./ISO
./Docs
./Perso

Voire :

find -mindepth 1 -maxdepth 1 -type d

pour se débarasser de l'alias ".".

Hors ligne

#40 Le 18/08/2011, à 12:49

FRUiT

Re : [resolu] liste fichier : contraire de */

Mais t'as lu le thread ? Ou pas ??

hizoka a écrit :

merci de ne pas me proposer find ou ls...


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne