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.

#1 Le 15/11/2011, à 21:49

baba00000000

[Résolu] Classer donner trouver avec find (+ sort et -execdir)

Bonjour à tous.


Je suis parti de cette commande:

find /~/test-bash -type f -execdir FONCTION ( mv, decompresser, ...) \;

Si je prends que le début de la commande j'obtiens le résultat suivant ( find /~/test-bash -type f) :

/home/test-bash/ftoensnasl.tye
/home/test-bash/fteonskken.res
/home/test-bash/ftaofkanv.tes
/home/test-bash/ldjanflva.rtf
/home/test-bash/test3.txt
/home/test-bash/test2.txt
/home/test-bash/test1.txt
/home/test-bash/slfnzlnvlvz.xfr
/home/test-bash/lesnflan.fle
/home/test-bash/gérard.zdi
/home/test-bash/test.txt

les noms ne sont pas triés par ordre alphabétique.
Pour décompresser, les bouger de place ce n'est pas gênant l'ordre.
Mais je voudrais que la sortie soit classée.

Avec ça j'obtiens le résultat:

find ~/test-bash  -type f | sort | -execdir mv {} ~/test-bash2/

J'obtiens bien mon classement, mais il ne continu pas l'action de déplacer les dossiers.
mv est un exemple.

Merci de m'avoir lu.

Dernière modification par baba00000000 (Le 15/11/2011, à 22:13)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#2 Le 15/11/2011, à 21:58

aduxas

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

C'est normal, une pipe sépare deux commandes différentes (en injectant la sortie de l'une dans l'autre).  Tu dois mettre ton tri a la fin de ton find.

Hors ligne

#3 Le 15/11/2011, à 22:00

pingouinux

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

Bonsoir,
Ceci devrait marcher. À peaufiner si les noms de fichiers contiennent des espaces ou des caractères spéciaux.

for fic in $(find ~/test-bash  -type f | sort); do mv "$fic" ~/test-bash2; done

Dernière modification par pingouinux (Le 16/11/2011, à 09:41)

Hors ligne

#4 Le 15/11/2011, à 22:16

baba00000000

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

Merci aduxas et pingouinux pour les réponses aussi rapide.
J'ai essayer à la fin, mais il ne fait pas ce que je veux.
Par contre la deuxième solution marche impec
Merci beaucoup.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#5 Le 15/11/2011, à 22:52

Watael

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

salut pingouinux

pour les bonnes raisons que tu donnes, on ne fait justement pas ce que tu suggères.

maintenant avec bash 4, s'il y a lieu de descendre dans les sous-répertoires

shopt -s globstar nullglob
for f in ~/test-bash/**/*
do
    if [ -f "$f" ]; then
        echo "$f"
        mv "$f" ~/test-bash2/
    fi
done

sinon avec find en forçant l'affichage avec -print et en redirigeant vers sort.

Dernière modification par Watael (Le 15/11/2011, à 22:52)


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

Hors ligne

#6 Le 15/11/2011, à 23:57

baba00000000

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

Bonjour Watael et merci d'avoir proposé ta solution.
Par contre je bloque au premier mot big_smile
Les autres de la première ligne j'ai pas encore cherché.
Pourrais tu m'en dire plus pour shopt que je ne trouve pas dans le man.
Merci
( à demain)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#7 Le 16/11/2011, à 00:25

Watael

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

salut,

tu devrais pouvoir accéder à une aide concernant shopt en tapant
help shopt
ou dans le man en tapant
man bash
puis
/^ *shopt \[


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

Hors ligne

#8 Le 31/10/2017, à 16:17

GMoulinCH

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

Bonjour,

Je déterre ce sujet car je cherche une solution similaire s'il vous plaît.

Je souhaite trier l'intégralité des dossiers puis fichiers (d'une carte microSD en l'occurrence) dans l'ordre alphabétique, et sur chacun je veux effectuer un touch à la date actuelle.

Dossier A
-- Dossier G
---- Fichier B
---- Fichier C
-- Dossier J
---- Fichier A
---- Fichier B
-- Dossier K
---- Fichier C
---- Fichier D
Dossier B
...


J'ai vainement tenté un :

find . -exec touch {} \;

Mais "ça marche pas". Les fichiers sont semble-t-il pris dans l'ordre de création, ou dans-je-ne-sais-quel-ordre-mais-en-tout-cas-pas-celui-que-je-veux mad...

Merci beaucoup smile,



[EDIT] Bon, j'aurais dû lire un peu plus haut. Voilà, ça peut servir :

shopt -s globstar
for f in **
do
    echo "$f";
    touch "$f"
done

Néanmoins, impossible de donner des droits "x" sur une carte SD, donc il faut copier ça "à l'arrache" dans un terminal big_smile.

Dernière modification par GMoulinCH (Le 31/10/2017, à 16:17)

Hors ligne

#9 Le 31/10/2017, à 19:01

Watael

Re : [Résolu] Classer donner trouver avec find (+ sort et -execdir)

dans l'ordre alphabétique

quel intérêt ?

Néanmoins, impossible de donner des droits "x" sur une carte SD, donc il faut copier ça "à l'arrache" dans un terminal.

le script peut quand même être sur la carte SD, en étant appelé par bash :

bash tonScript

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

Hors ligne