Shell Linux : joker "*" n'est pas interp
Ssylvainsab
Messages postés
2884
Date d'inscription
Statut
Modérateur
Dernière intervention
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour.
J'utilise un script automatique (avec crontab) sous Linux.
Ce script est censé enlever certains dossiers en se basant sur le début de leur nom.
Par exemple, j'ai besoin de supprimer les dossiers dont le nom commence par "foo" :
rm "/mndossier/foo*"
Mais apparement le caractère "*" n'est pas interpété comme un joker et cela provoque une erreur :
rm : le fichier ou dossier "/mndossier/foo*" n'existe pas.
Comment faire pour que le joker soit interprété de façon à ce que les dossiers dont le nom commence par "foo" soient bien supprimés ?
Merci.
--
Sylvain
J'utilise un script automatique (avec crontab) sous Linux.
Ce script est censé enlever certains dossiers en se basant sur le début de leur nom.
Par exemple, j'ai besoin de supprimer les dossiers dont le nom commence par "foo" :
rm "/mndossier/foo*"
Mais apparement le caractère "*" n'est pas interpété comme un joker et cela provoque une erreur :
rm : le fichier ou dossier "/mndossier/foo*" n'existe pas.
Comment faire pour que le joker soit interprété de façon à ce que les dossiers dont le nom commence par "foo" soient bien supprimés ?
Merci.
--
Sylvain
A voir également:
- Shell Linux : joker "*" n'est pas interp
- Classic shell - Télécharger - Personnalisation
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- Backtrack linux - Télécharger - Sécurité
- R-linux - Télécharger - Sauvegarde
3 réponses
Hm, ça semble fonctionner.
Bizarre pourtant, il me semble que j'utilise le script à plusieurs endroits, et que parfois ça ne fonctionnait pas, que ce soit avec ou sans les guillemets.
Enfin, ce doit être une étourderie de ma part.
Le script que j'utilise est un script pour sauvegarder des fichiers de config, le voilà si ça peut servir à quelqu'un :
--
Sylvain
Bizarre pourtant, il me semble que j'utilise le script à plusieurs endroits, et que parfois ça ne fonctionnait pas, que ce soit avec ou sans les guillemets.
Enfin, ce doit être une étourderie de ma part.
Le script que j'utilise est un script pour sauvegarder des fichiers de config, le voilà si ça peut servir à quelqu'un :
#!/bin/bash ##### # Un script de backup très simple créé pour # sauvegarder des répertoires et fichiers importants. # # Le script ne fait que copier les fichiers et répertoires # à sauvegarder dans un autre répertoire, en conservant la hiérarchie. # Les droits sont également conservés, sauf ceux de l'array dir_sauvegarde, # c'est à dire les dossiers que l'on crée et que l'on ne copie pas entièrement, # mais dans lesquels on sauvegarde (copie) d'autres répertoires en entier. # # Par défaut, le dossier de sauvegarde est accessible uniquement par le root. # # Le dossier de sauvegarde est nommé selon la date et l'heure. # # Pour automatiser cette tâche, il suffit de placer le script # dans un dossier de cron et de le rendre exécutable. ##### ################### ## CONFIGURATION #Dossier de stockage des sauvegardes dossier_sauvegarde_general="/mnt/unix-backup/ubuntu/"; #A qui appartiennent les sauvegardes ? (Utiliser $(whoami) pour celui qui exécute le script) #ATTENTION, ne sera pris en compte que si l'utilisateur qui exécute le script est root. owner=root; grp=root; #Droits sur le dossier de sauvegarde racine #Il faut que ces droits donnent la lecture et l'écriture au propriétaire chmod=755; #Nombre de jours après lequel les sauvegardes sont obsolètes sauvegardes_obsoletes_apres=30; #Nombre de jours jusqu'auquel il faut vérifier les sauvegardes obsolètes sauvegardes_obsoletes_jusqua=120; ## La liste des répertoires et fichiers à sauvegarder #Et l'emplacement de la sauvegarde # #(chemin relatif à celui de ce que l'on sauvegarde) a_sauvegarder+=('/etc'); dir_sauvegarde+=(''); a_sauvegarder+=('/boot/grub/menu.lst'); dir_sauvegarde+=('boot/grub/'); ################### ## SCRIPT ## Le dossier de sauvegarde pour cette fois (nommé selon la date et l'heure) date_actuelle=$(date +%Y-%m-%d--%Hh%M); dossier_sauvegarde="$dossier_sauvegarde_general$date_actuelle/"; ## Création des dossiers de sauvegarde #Modification des droits du dossier parent mkdir -p "$dossier_sauvegarde"; if [ $(whoami) = 'root' ]; then chown $owner:$grp "$dossier_sauvegarde"; fi chmod "$chmod" "$dossier_sauvegarde"; #Création des sous-répertoires for dossier in ${dir_sauvegarde[*]}; do if test ! -d "$dossier_sauvegarde$dossier"; then mkdir -p "$dossier_sauvegarde$dossier"; fi done; ## Copie des dossiers à sauvegarder nb_dossiers=${#a_sauvegarder[*]} for ((i=0;i<nb_dossiers;i++)); do cp -a "${a_sauvegarder[$i]}" "$dossier_sauvegarde${dir_sauvegarde[$i]}"; done ## Suppression des sauvegardes obsoletes for((nb_jours=$sauvegardes_obsoletes_apres;nb_jours<$sauvegardes_obsoletes_jusqua;nb_jours++)); do date_obsolete=$(date +%Y-%m-%d --date="-$nb_jours day"); rm -r $dossier_sauvegarde_general$date_obsolete*; done
--
Sylvain