#1 Le 15/11/2011, à 20: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, à 21:13)
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, à 20: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, à 21: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, à 08:41)
Hors ligne
#4 Le 15/11/2011, à 21: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/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.
Hors ligne
#5 Le 15/11/2011, à 21: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, à 21:52)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 15/11/2011, à 22: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
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/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.
Hors ligne
#7 Le 15/11/2011, à 23: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, à 15: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 ...
Merci beaucoup ,
[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 .
Dernière modification par GMoulinCH (Le 31/10/2017, à 15:17)
Hors ligne
#9 Le 31/10/2017, à 18: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