2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas
comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le
paramètre d'action print0 doit il toujours etre à la fin de la commande?
oui, pourquoi?
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime
+7) sans être embêté par les noms de fichiers comprenant des espaces? le
print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est
inutile...
Merci, à bientôt!
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas
comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le
paramètre d'action print0 doit il toujours etre à la fin de la commande?
oui, pourquoi?
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime
+7) sans être embêté par les noms de fichiers comprenant des espaces? le
print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est
inutile...
Merci, à bientôt!
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas
comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le
paramètre d'action print0 doit il toujours etre à la fin de la commande?
oui, pourquoi?
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime
+7) sans être embêté par les noms de fichiers comprenant des espaces? le
print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est
inutile...
Merci, à bientôt!
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas
comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le
paramètre d'action print0 doit il toujours etre à la fin de la
commande? Si oui, pourquoi?
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas
comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le
paramètre d'action print0 doit il toujours etre à la fin de la
commande? Si oui, pourquoi?
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas
comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le
paramètre d'action print0 doit il toujours etre à la fin de la
commande? Si oui, pourquoi?
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas co mme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le param ètre d'action print0 doit il toujours etre à la fin de la command e? Si oui, pourquoi?
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" - mtime +7) sans être embêté par les noms de fichiers comprena nt des espaces? le print0 est pas mal mais sans xargs derrière j'ai l' impression que c'est inutile...
Merci, à bientôt!
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas co mme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le param ètre d'action print0 doit il toujours etre à la fin de la command e? Si oui, pourquoi?
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" - mtime +7) sans être embêté par les noms de fichiers comprena nt des espaces? le print0 est pas mal mais sans xargs derrière j'ai l' impression que c'est inutile...
Merci, à bientôt!
Bonjour à tous!
2 petites questions à propos de la commande find.
1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas co mme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le param ètre d'action print0 doit il toujours etre à la fin de la command e? Si oui, pourquoi?
2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" - mtime +7) sans être embêté par les noms de fichiers comprena nt des espaces? le print0 est pas mal mais sans xargs derrière j'ai l' impression que c'est inutile...
Merci, à bientôt!
On Friday 21 January 2011 à 08:16:15AM, Fabien LUCE wrote:
> Bonjour à tous!
>
>
> 2 petites questions à propos de la commande find.
>
> 1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le paramètre d'action print0 doit il toujours etre à la fin de la commande? Si oui, pourquoi?
> 2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
>
> Merci, à bientôt!
Comme celà a été dit, il vaut mieux mettre -print0 à la fin des arguments
passés à find. A part ça :
* tu as parfaitement raison, on ne devrait jamais utiliser xargs sans -0
* find a un xargs "builtin". Je m'explique :
$ find /foo -type f -bla -bla -exec ma commande {} ;
va exécuter "ma commande" pour chaque fichier trouvé. A noter qu'il n'y a pas
de souci à se faire avec les noms de fichiers exotiques.
$ find /foo -type f -bla -bla -exec ma commande {} +
va lancer "ma commande" en lui passant un maximum de chemins en paramètre
(comme xargs), toujours de manière sûre (quoiqu'on puisse préférer -execdir).
En bonus, cette possibilité (le -exec ... +) est censé être standard.
S'il te plaît, ne cherches pas à mettre la sortie de find dans un tableau,
si à jouer avec l'IFS et faire des trucs genre :
$ for fichier in $liste_fichiers; do echo $fichier; done
Par contre, si tu n'as pas besoin d'un traitement récursif, ton shell suffit,
pas besoin de find, juste de bash :
for fichier in ./*.[jJ][pP][gG]; do
[[ -f "$fichier" ]] || continue
if [[ "$fichier" = *.jpg ]]; then
echo "OK, fichier .jpg : $fichier"
else
echo mv "$fichier" "${fichier%.???}.jpg"
fi
done
My two cents
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
On Friday 21 January 2011 à 08:16:15AM, Fabien LUCE wrote:
> Bonjour à tous!
>
>
> 2 petites questions à propos de la commande find.
>
> 1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le paramètre d'action print0 doit il toujours etre à la fin de la commande? Si oui, pourquoi?
> 2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
>
> Merci, à bientôt!
Comme celà a été dit, il vaut mieux mettre -print0 à la fin des arguments
passés à find. A part ça :
* tu as parfaitement raison, on ne devrait jamais utiliser xargs sans -0
* find a un xargs "builtin". Je m'explique :
$ find /foo -type f -bla -bla -exec ma commande {} ;
va exécuter "ma commande" pour chaque fichier trouvé. A noter qu'il n'y a pas
de souci à se faire avec les noms de fichiers exotiques.
$ find /foo -type f -bla -bla -exec ma commande {} +
va lancer "ma commande" en lui passant un maximum de chemins en paramètre
(comme xargs), toujours de manière sûre (quoiqu'on puisse préférer -execdir).
En bonus, cette possibilité (le -exec ... +) est censé être standard.
S'il te plaît, ne cherches pas à mettre la sortie de find dans un tableau,
si à jouer avec l'IFS et faire des trucs genre :
$ for fichier in $liste_fichiers; do echo $fichier; done
Par contre, si tu n'as pas besoin d'un traitement récursif, ton shell suffit,
pas besoin de find, juste de bash :
for fichier in ./*.[jJ][pP][gG]; do
[[ -f "$fichier" ]] || continue
if [[ "$fichier" = *.jpg ]]; then
echo "OK, fichier .jpg : $fichier"
else
echo mv "$fichier" "${fichier%.???}.jpg"
fi
done
My two cents
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
On Friday 21 January 2011 à 08:16:15AM, Fabien LUCE wrote:
> Bonjour à tous!
>
>
> 2 petites questions à propos de la commande find.
>
> 1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le paramètre d'action print0 doit il toujours etre à la fin de la commande? Si oui, pourquoi?
> 2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
>
> Merci, à bientôt!
Comme celà a été dit, il vaut mieux mettre -print0 à la fin des arguments
passés à find. A part ça :
* tu as parfaitement raison, on ne devrait jamais utiliser xargs sans -0
* find a un xargs "builtin". Je m'explique :
$ find /foo -type f -bla -bla -exec ma commande {} ;
va exécuter "ma commande" pour chaque fichier trouvé. A noter qu'il n'y a pas
de souci à se faire avec les noms de fichiers exotiques.
$ find /foo -type f -bla -bla -exec ma commande {} +
va lancer "ma commande" en lui passant un maximum de chemins en paramètre
(comme xargs), toujours de manière sûre (quoiqu'on puisse préférer -execdir).
En bonus, cette possibilité (le -exec ... +) est censé être standard.
S'il te plaît, ne cherches pas à mettre la sortie de find dans un tableau,
si à jouer avec l'IFS et faire des trucs genre :
$ for fichier in $liste_fichiers; do echo $fichier; done
Par contre, si tu n'as pas besoin d'un traitement récursif, ton shell suffit,
pas besoin de find, juste de bash :
for fichier in ./*.[jJ][pP][gG]; do
[[ -f "$fichier" ]] || continue
if [[ "$fichier" = *.jpg ]]; then
echo "OK, fichier .jpg : $fichier"
else
echo mv "$fichier" "${fichier%.???}.jpg"
fi
done
My two cents
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
On Friday 21 January 2011 à 08:16:15AM, Fabien LUCE wrote:
> Bonjour à tous!
>
>
> 2 petites questions à propos de la commande find.
>
> 1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le paramètre d'action print0 doit il toujours etre à la fin de la commande? Si oui, pourquoi?
> 2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
>
> Merci, à bientôt!
Comme celà a été dit, il vaut mieux mettre -print0 à la fin des arguments
passés à find. A part ça :
* tu as parfaitement raison, on ne devrait jamais utiliser xargs sans -0
* find a un xargs "builtin". Je m'explique :
$ find /foo -type f -bla -bla -exec ma commande {} ;
va exécuter "ma commande" pour chaque fichier trouvé. A noter qu'il n'y a pas
de souci à se faire avec les noms de fichiers exotiques.
$ find /foo -type f -bla -bla -exec ma commande {} +
va lancer "ma commande" en lui passant un maximum de chemins en paramètre
(comme xargs), toujours de manière sûre (quoiqu'on puisse préférer -execdir).
En bonus, cette possibilité (le -exec ... +) est censé être standard.
S'il te plaît, ne cherches pas à mettre la sortie de find dans un tableau,
si à jouer avec l'IFS et faire des trucs genre :
$ for fichier in $liste_fichiers; do echo $fichier; done
Par contre, si tu n'as pas besoin d'un traitement récursif, ton shell suffit,
pas besoin de find, juste de bash :
for fichier in ./*.[jJ][pP][gG]; do
[[ -f "$fichier" ]] || continue
if [[ "$fichier" = *.jpg ]]; then
echo "OK, fichier .jpg : $fichier"
else
echo mv "$fichier" "${fichier%.???}.jpg"
fi
done
My two cents
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
On Friday 21 January 2011 à 08:16:15AM, Fabien LUCE wrote:
> Bonjour à tous!
>
>
> 2 petites questions à propos de la commande find.
>
> 1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le paramètre d'action print0 doit il toujours etre à la fin de la commande? Si oui, pourquoi?
> 2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
>
> Merci, à bientôt!
Comme celà a été dit, il vaut mieux mettre -print0 à la fin des arguments
passés à find. A part ça :
* tu as parfaitement raison, on ne devrait jamais utiliser xargs sans -0
* find a un xargs "builtin". Je m'explique :
$ find /foo -type f -bla -bla -exec ma commande {} ;
va exécuter "ma commande" pour chaque fichier trouvé. A noter qu'il n'y a pas
de souci à se faire avec les noms de fichiers exotiques.
$ find /foo -type f -bla -bla -exec ma commande {} +
va lancer "ma commande" en lui passant un maximum de chemins en paramètre
(comme xargs), toujours de manière sûre (quoiqu'on puisse préférer -execdir).
En bonus, cette possibilité (le -exec ... +) est censé être standard.
S'il te plaît, ne cherches pas à mettre la sortie de find dans un tableau,
si à jouer avec l'IFS et faire des trucs genre :
$ for fichier in $liste_fichiers; do echo $fichier; done
Par contre, si tu n'as pas besoin d'un traitement récursif, ton shell suffit,
pas besoin de find, juste de bash :
for fichier in ./*.[jJ][pP][gG]; do
[[ -f "$fichier" ]] || continue
if [[ "$fichier" = *.jpg ]]; then
echo "OK, fichier .jpg : $fichier"
else
echo mv "$fichier" "${fichier%.???}.jpg"
fi
done
My two cents
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
On Friday 21 January 2011 à 08:16:15AM, Fabien LUCE wrote:
> Bonjour à tous!
>
>
> 2 petites questions à propos de la commande find.
>
> 1) pourquoi find / -name "*test*" -mtime +7 -print0 ne se comporte pas comme find / -print0 -name "*test*" -mtime +7 ? En d'autres termes: le paramètre d'action print0 doit il toujours etre à la fin de la commande? Si oui, pourquoi?
> 2) comment puis-je écrire: liste_fichier=$(find / -name "*test*" -mtime +7) sans être embêté par les noms de fichiers comprenant des espaces? le print0 est pas mal mais sans xargs derrière j'ai l'impression que c'est inutile...
>
> Merci, à bientôt!
Comme celà a été dit, il vaut mieux mettre -print0 à la fin des arguments
passés à find. A part ça :
* tu as parfaitement raison, on ne devrait jamais utiliser xargs sans -0
* find a un xargs "builtin". Je m'explique :
$ find /foo -type f -bla -bla -exec ma commande {} ;
va exécuter "ma commande" pour chaque fichier trouvé. A noter qu'il n'y a pas
de souci à se faire avec les noms de fichiers exotiques.
$ find /foo -type f -bla -bla -exec ma commande {} +
va lancer "ma commande" en lui passant un maximum de chemins en paramètre
(comme xargs), toujours de manière sûre (quoiqu'on puisse préférer -execdir).
En bonus, cette possibilité (le -exec ... +) est censé être standard.
S'il te plaît, ne cherches pas à mettre la sortie de find dans un tableau,
si à jouer avec l'IFS et faire des trucs genre :
$ for fichier in $liste_fichiers; do echo $fichier; done
Par contre, si tu n'as pas besoin d'un traitement récursif, ton shell suffit,
pas besoin de find, juste de bash :
for fichier in ./*.[jJ][pP][gG]; do
[[ -f "$fichier" ]] || continue
if [[ "$fichier" = *.jpg ]]; then
echo "OK, fichier .jpg : $fichier"
else
echo mv "$fichier" "${fichier%.???}.jpg"
fi
done
My two cents
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
je viens d'essayer un petit:
tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
je viens d'essayer un petit:
tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
je viens d'essayer un petit:
tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
On Sat, Jan 22, 2011 at 10:06:27PM +0100, Fabien LUCE wrote:
> je viens d'essayer un petit:
> tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
J'ai peut-être raté un épisode, mais pourquoi ne pas faire
un simple:
tar cjvf test.tar.bz2 *
?
Sinon, j'aurais tendance à ajouter des guillements autour
des noms de fichiers qui contiennent des espaces, donc:
tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo "{}" +)
Pas testé, donc sans garantie.
Y.
On Sat, Jan 22, 2011 at 10:06:27PM +0100, Fabien LUCE wrote:
> je viens d'essayer un petit:
> tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
J'ai peut-être raté un épisode, mais pourquoi ne pas faire
un simple:
tar cjvf test.tar.bz2 *
?
Sinon, j'aurais tendance à ajouter des guillements autour
des noms de fichiers qui contiennent des espaces, donc:
tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo "{}" +)
Pas testé, donc sans garantie.
Y.
On Sat, Jan 22, 2011 at 10:06:27PM +0100, Fabien LUCE wrote:
> je viens d'essayer un petit:
> tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
J'ai peut-être raté un épisode, mais pourquoi ne pas faire
un simple:
tar cjvf test.tar.bz2 *
?
Sinon, j'aurais tendance à ajouter des guillements autour
des noms de fichiers qui contiennent des espaces, donc:
tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo "{}" +)
Pas testé, donc sans garantie.
Y.
On Saturday 22 January 2011 à 10:36:57PM, Yves Rutschle wrote:
> On Sat, Jan 22, 2011 at 10:06:27PM +0100, Fabien LUCE wrote:
> > je viens d'essayer un petit:
> > tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
Eeek.
Y'a un gros souci là.
Dans ton utilisation de find, tu ne résouds en rien le problème des noms de
fichiers problématiques, pour une bonne raison : tu laisses le shell
"splitter" la sortie de find, par la simple utilisation de $(...).
Tu pourrais, en étant vraiment vicieux, utiliser find pour ta tâche :
$ find . -mindepth 1 -exec tar cjvf test.tar.bz2 {} +
Mais ce genre d'utilisation est déconseillée, car on crée ainsi des archives
qui s'extraient dans le répertoire courant.
> J'ai peut-être raté un épisode, mais pourquoi ne pas faire
> un simple:
>
> tar cjvf test.tar.bz2 *
>
> ?
Histoire de sauvegarder aussi les fichiers et répertoires cachés ?
Ou pas...
> Sinon, j'aurais tendance à ajouter des guillements autour
> des noms de fichiers qui contiennent des espaces, donc:
>
> tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo "{}" +)
Inutile, le problème intervient lorsque le shell interprète la sortie de la
substitution $(...).
De manière générale, utiliser $(...) sans guillemets doubles autour est une
erreur.
Pas besoin de mettre des guillemets autour de {} : le shell n'interprète
pas les noms de fichier car {} est une sémantique interne à find(1).
find(1) passe directement par un appel à execvp(2) pour lancer la commande,
donc les noms de fichiers représentés par {} ne sont pas interprétés.
> Pas testé, donc sans garantie.
>
> Y.
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
On Saturday 22 January 2011 à 10:36:57PM, Yves Rutschle wrote:
> On Sat, Jan 22, 2011 at 10:06:27PM +0100, Fabien LUCE wrote:
> > je viens d'essayer un petit:
> > tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
Eeek.
Y'a un gros souci là.
Dans ton utilisation de find, tu ne résouds en rien le problème des noms de
fichiers problématiques, pour une bonne raison : tu laisses le shell
"splitter" la sortie de find, par la simple utilisation de $(...).
Tu pourrais, en étant vraiment vicieux, utiliser find pour ta tâche :
$ find . -mindepth 1 -exec tar cjvf test.tar.bz2 {} +
Mais ce genre d'utilisation est déconseillée, car on crée ainsi des archives
qui s'extraient dans le répertoire courant.
> J'ai peut-être raté un épisode, mais pourquoi ne pas faire
> un simple:
>
> tar cjvf test.tar.bz2 *
>
> ?
Histoire de sauvegarder aussi les fichiers et répertoires cachés ?
Ou pas...
> Sinon, j'aurais tendance à ajouter des guillements autour
> des noms de fichiers qui contiennent des espaces, donc:
>
> tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo "{}" +)
Inutile, le problème intervient lorsque le shell interprète la sortie de la
substitution $(...).
De manière générale, utiliser $(...) sans guillemets doubles autour est une
erreur.
Pas besoin de mettre des guillemets autour de {} : le shell n'interprète
pas les noms de fichier car {} est une sémantique interne à find(1).
find(1) passe directement par un appel à execvp(2) pour lancer la commande,
donc les noms de fichiers représentés par {} ne sont pas interprétés.
> Pas testé, donc sans garantie.
>
> Y.
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494
On Saturday 22 January 2011 à 10:36:57PM, Yves Rutschle wrote:
> On Sat, Jan 22, 2011 at 10:06:27PM +0100, Fabien LUCE wrote:
> > je viens d'essayer un petit:
> > tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo {} +)
Eeek.
Y'a un gros souci là.
Dans ton utilisation de find, tu ne résouds en rien le problème des noms de
fichiers problématiques, pour une bonne raison : tu laisses le shell
"splitter" la sortie de find, par la simple utilisation de $(...).
Tu pourrais, en étant vraiment vicieux, utiliser find pour ta tâche :
$ find . -mindepth 1 -exec tar cjvf test.tar.bz2 {} +
Mais ce genre d'utilisation est déconseillée, car on crée ainsi des archives
qui s'extraient dans le répertoire courant.
> J'ai peut-être raté un épisode, mais pourquoi ne pas faire
> un simple:
>
> tar cjvf test.tar.bz2 *
>
> ?
Histoire de sauvegarder aussi les fichiers et répertoires cachés ?
Ou pas...
> Sinon, j'aurais tendance à ajouter des guillements autour
> des noms de fichiers qui contiennent des espaces, donc:
>
> tar cjvf test.tar.bz2 $(find . -mindepth 1 -name "*" -exec echo "{}" +)
Inutile, le problème intervient lorsque le shell interprète la sortie de la
substitution $(...).
De manière générale, utiliser $(...) sans guillemets doubles autour est une
erreur.
Pas besoin de mettre des guillemets autour de {} : le shell n'interprète
pas les noms de fichier car {} est une sémantique interne à find(1).
find(1) passe directement par un appel à execvp(2) pour lancer la commande,
donc les noms de fichiers représentés par {} ne sont pas interprétés.
> Pas testé, donc sans garantie.
>
> Y.
--
"Free software, free society."
Jérémie Courrèges-Anglas
GPG key : 06A11494