# Besoin d'aide pour un script

**URL:** <https://www.debian-fr.org/t/besoin-daide-pour-un-script/28130>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/besoin-daide-pour-un-script/28130 "2016-02-20T23:10:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Solidstatedrive](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/df705f/32.png) [@Solidstatedrive](https://www.debian-fr.org/u/Solidstatedrive)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/besoin-daide-pour-un-script/28130/1 "2016-02-20T23:10:09Z")

</div>

Bonjour,

J’aimerai faire un script qui déplace des fichiers d’un dossier X à un dossier Y selon une condition assez simple : Si 2 fichiers portants une extension définie se trouvent dans le dossier X, déplacer le plus vieux des deux fichiers dans le dossier Y.

Je connais les commandes de base :

mv  
ls -l

Mais le problème c’est que je ne sais pas comment automatiser la tâche (que le répertoire soit scanné toutes les 5 minutes), comment récupérer le nom du fichier pour que la commande mv le déplace, et comment faire en sorte que l’output de ls soit aussi récupéré pour que la date et l’heure de création du fichier soient pris en compte.

Merci d’avance pour votre aide.

---

<div class="post-metadata">

**Author:** ![o\_b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/o/8dc957/32.png) [@o\_b](https://www.debian-fr.org/u/o_b)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/besoin-daide-pour-un-script/28130/2 "2016-02-20T23:10:10Z")

</div>

pour tout ce qui est automatisation, tu peux commencer par te renseigner sur cron.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/besoin-daide-pour-un-script/28130/3 "2016-02-20T23:10:16Z")

</div>

Pour le script le voici :

[code]#!/bin/sh

ext=‘txt’

cd X

if [$(ls -1 \*.$ext | wc -l) -eq 2]; then  
mv $(ls -1 --sort=time \*.txt | tail -n 1) Y  
fi[/code]

Pour cron la commande est facile à trouver sur google. Pour le script si tu veut que je l’explique n’hésite pas.

---

<div class="post-metadata">

**Author:** ![Solidstatedrive](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/df705f/32.png) [@Solidstatedrive](https://www.debian-fr.org/u/Solidstatedrive)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/besoin-daide-pour-un-script/28130/4 "2016-02-20T23:10:20Z")

</div>

Oui je veux bien que tu m’expliques, en tout cas merci beaucoup pour ton aide.

Ce que je ne comprends pas surtout c’est l’utilisation des $ au début des lignes, le $ dans \*.$ext (qu’est ce que ça aurait changé si ça avait été \*.ext?). (Edit, je crois que je viens de comprendre, en fait, sans le $ il aurait juste recherché les .ext, et non ext=‘txt’)

Et d’où viennent tous les termes comme wc , tail ?  
Où apprendre ce language ?

Et fi ça veut dire que le if se fini là ?

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/besoin-daide-pour-un-script/28130/5 "2016-02-20T23:10:23Z")

</div>

> [@Solidstatedrive](#):
>
> Ce que je ne comprends pas surtout c’est l’utilisation des $ au début des lignes, le $ dans \*.$ext (qu’est ce que ça aurait changé si ça avait été \*.ext?). (Edit, je crois que je viens de comprendre, en fait, sans le $ il aurait juste recherché les .ext, et non ext=‹&nbsp;txt&nbsp;›)

Tu as compris $ext est une variable qui représente «&nbsp;txt&nbsp;».

[quote=«&nbsp;Solidstatedrive&nbsp;»]Et d’où viennent tous les termes comme wc , tail ?  
Où apprendre ce langage ?[/quote]  
On ne peux pas les apprendre de manière séquentielle de façon simple.  
Généralement on apprend ça au fur et à mesure.  
Tu peut en trouver de liste sur inter net :  
[ul]  
[li][I Challenge Thee](http://wiki.debian.org/fr/ShellCommands) (c’est moi qui l’ai fait 😃 )[/li]  
[li][https://secure.wikimedia.org/wikipedia/fr/wiki/Commandes\_Unix[/li]](https://secure.wikimedia.org/wikipedia/fr/wiki/Commandes_Unix%5B/li%5D)  
[li]les principaux font parti du paquet coreutils (qui est déjà installé sur ton ordinateur, il est nécéssaire au bon fonctionnement de Debian), tu peut voir la liste des commande qu’il fournis grâce à la commande :

`dpkg -L coreutils | grep '/bin'`[/li][/ul]

Ce sont des listes de commandes mais pour mieux les connaître il faut lire leur documentation pour ça tu as le man (man nom\_de\_la\_commande) ou tu peut les lancer avec l’option --help.

Il est je pense important de comprendre que ça ne constitue pas un langage. En fait c’est un ensemble de programmes. Tu peut les utiliser de pleins de manière différentes.

Les langages de scripts comme les scripts shell sont dit des langages « glue » car ils servent principalement à faire travailler ensemble tout ces programmes.

Sur le forum nous sommes plusieurs à pas mal utiliser ce genre de chose, on se ferras un plaisir de t’aider si tu as un problème.

> [@Solidstatedrive](#):
>
> Et fi ça veut dire que le if se fini là ?

C’est exacte cette partie là c’est viens du langage utilisé (le script (bourn) shell).
