Je souhaiterai supprimer le contenu d'une arborescence
sans supprimer l'arborescence
C'est =E0 dire ne supprimer que les fichiers
Je n'ai pas trouver comment faire avec les options de la commande rm
QUelqu'un peut-il me donner une piste ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thomas Baruchel
Je souhaiterai supprimer le contenu d'une arborescence sans supprimer l'arborescence C'est à dire ne supprimer que les fichiers Je n'ai pas trouver comment faire avec les options de la commande rm QUelqu'un peut-il me donner une piste ?
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Cordialement
-- Thomas Baruchel write to baruchel at the host called bluebottle dot com écrire à baruchel chez l'hôte nommé bluebottle point com http://baruchel.free.fr/~thomas/
Je souhaiterai supprimer le contenu d'une arborescence
sans supprimer l'arborescence
C'est à dire ne supprimer que les fichiers
Je n'ai pas trouver comment faire avec les options de la commande rm
QUelqu'un peut-il me donner une piste ?
Regarde la commande 'find' en réglant sur le type 'f' (fichiers)
avec l'option -exec (pour exécuter une action)
un truc comme
find ./ -type f -exec rm {} ;
Cordialement
--
Thomas Baruchel
write to baruchel at the host called bluebottle dot com
écrire à baruchel chez l'hôte nommé bluebottle point com
http://baruchel.free.fr/~thomas/
Je souhaiterai supprimer le contenu d'une arborescence sans supprimer l'arborescence C'est à dire ne supprimer que les fichiers Je n'ai pas trouver comment faire avec les options de la commande rm QUelqu'un peut-il me donner une piste ?
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Cordialement
-- Thomas Baruchel write to baruchel at the host called bluebottle dot com écrire à baruchel chez l'hôte nommé bluebottle point com http://baruchel.free.fr/~thomas/
ok merci ca marche nickel ! évidemment, ajoute l'option -f à rm si nécessaire.
Cordialement,
-- Thomas Baruchel write to baruchel at the host called bluebottle dot com écrire à baruchel chez l'hôte nommé bluebottle point com http://baruchel.free.fr/~thomas/
ok merci ca marche nickel !
évidemment, ajoute l'option -f à rm si nécessaire.
Cordialement,
--
Thomas Baruchel
write to baruchel at the host called bluebottle dot com
écrire à baruchel chez l'hôte nommé bluebottle point com
http://baruchel.free.fr/~thomas/
ok merci ca marche nickel ! évidemment, ajoute l'option -f à rm si nécessaire.
Cordialement,
-- Thomas Baruchel write to baruchel at the host called bluebottle dot com écrire à baruchel chez l'hôte nommé bluebottle point com http://baruchel.free.fr/~thomas/
Stephane Chazelas
On 14 Oct 2005 14:49:08 GMT, Thomas Baruchel wrote:
Je souhaiterai supprimer le contenu d'une arborescence sans supprimer l'arborescence C'est à dire ne supprimer que les fichiers Je n'ai pas trouver comment faire avec les options de la commande rm QUelqu'un peut-il me donner une piste ?
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ; [...]
Ca n'efface que les fichiers reguliers (pas les symlinks, les fifos, les socket...)
find . ! -type d -exec rm -f {} +
Le "+", c'est pour eviter d'avoir a lancer un rm par fichier.
Avec zsh:
rm ./**/*(D^/)
-- Stephane
On 14 Oct 2005 14:49:08 GMT, Thomas Baruchel wrote:
Je souhaiterai supprimer le contenu d'une arborescence
sans supprimer l'arborescence
C'est à dire ne supprimer que les fichiers
Je n'ai pas trouver comment faire avec les options de la commande rm
QUelqu'un peut-il me donner une piste ?
Regarde la commande 'find' en réglant sur le type 'f' (fichiers)
avec l'option -exec (pour exécuter une action)
un truc comme
find ./ -type f -exec rm {} ;
[...]
Ca n'efface que les fichiers reguliers (pas les symlinks, les
fifos, les socket...)
find . ! -type d -exec rm -f {} +
Le "+", c'est pour eviter d'avoir a lancer un rm par fichier.
On 14 Oct 2005 14:49:08 GMT, Thomas Baruchel wrote:
Je souhaiterai supprimer le contenu d'une arborescence sans supprimer l'arborescence C'est à dire ne supprimer que les fichiers Je n'ai pas trouver comment faire avec les options de la commande rm QUelqu'un peut-il me donner une piste ?
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ; [...]
Ca n'efface que les fichiers reguliers (pas les symlinks, les fifos, les socket...)
find . ! -type d -exec rm -f {} +
Le "+", c'est pour eviter d'avoir a lancer un rm par fichier.
Avec zsh:
rm ./**/*(D^/)
-- Stephane
Benoit Izac
Bonjour,
le 14/10/2005 à 17:34, Stephane Chazelas a écrit dans le message :
find . ! -type d -exec rm -f {} +
Tu ne double-quote plus les {} ?
-- Benoit Izac
Bonjour,
le 14/10/2005 à 17:34, Stephane Chazelas a écrit
dans le message <slrndkvk0c.4rq.stephane_chazelas@duey.spider.com> :
le 14/10/2005 à 17:34, Stephane Chazelas a écrit dans le message :
find . ! -type d -exec rm -f {} +
Tu ne double-quote plus les {} ?
-- Benoit Izac
David
Le Fri, 14 Oct 2005 14:49:08 +0000, Thomas Baruchel a écrit :
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Le Fri, 14 Oct 2005 14:49:08 +0000, Thomas Baruchel a écrit :
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec
l'option -exec (pour exécuter une action)
un truc comme
find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère :
find ./ -type f | xargs rm
Le Fri, 14 Oct 2005 14:49:08 +0000, Thomas Baruchel a écrit :
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Stephane Chazelas
2005-10-14, 22:25(+02), David:
Le Fri, 14 Oct 2005 14:49:08 +0000, Thomas Baruchel a écrit :
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour des noms de fichiers tres particuliers.
Pour la performance, utiliser
find . -type f -exec rm {} +
-- Stéphane
2005-10-14, 22:25(+02), David:
Le Fri, 14 Oct 2005 14:49:08 +0000, Thomas Baruchel a écrit :
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec
l'option -exec (pour exécuter une action)
un truc comme
find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère :
find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour
des noms de fichiers tres particuliers.
Le Fri, 14 Oct 2005 14:49:08 +0000, Thomas Baruchel a écrit :
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour des noms de fichiers tres particuliers.
Pour la performance, utiliser
find . -type f -exec rm {} +
-- Stéphane
Jean-Louis Liagre
Stephane Chazelas wrote:
2005-10-14, 22:25(+02), David:
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour des noms de fichiers tres particuliers.
C'est exagéré. J'aurais plutôt écrit: find est compatible avec xargs sauf pour les noms de fichiers très particuliers créés par des utilisateurs ou des applications ne respectant pas une convention existant depuis les origines d'Unix.
Stephane Chazelas wrote:
2005-10-14, 22:25(+02), David:
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec
l'option -exec (pour exécuter une action)
un truc comme
find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère :
find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour
des noms de fichiers tres particuliers.
C'est exagéré. J'aurais plutôt écrit: find est compatible avec xargs
sauf pour les noms de fichiers très particuliers créés par des
utilisateurs ou des applications ne respectant pas une convention
existant depuis les origines d'Unix.
Regarde la commande 'find' en réglant sur le type 'f' (fichiers) avec l'option -exec (pour exécuter une action) un truc comme find ./ -type f -exec rm {} ;
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour des noms de fichiers tres particuliers.
C'est exagéré. J'aurais plutôt écrit: find est compatible avec xargs sauf pour les noms de fichiers très particuliers créés par des utilisateurs ou des applications ne respectant pas une convention existant depuis les origines d'Unix.
Stephane Chazelas
2005-10-17, 08:12(+02), Jean-Louis Liagre: [...]
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour des noms de fichiers tres particuliers.
C'est exagéré. J'aurais plutôt écrit: find est compatible avec xargs sauf pour les noms de fichiers très particuliers créés par des utilisateurs ou des applications ne respectant pas une convention existant depuis les origines d'Unix. [...]
Non. Depuis les origines d'Unix, NL, SPC, TAB les singles quotes, les double quotes et les backslashs sont autorisés dans les noms de fichiers. xargs est tout-a-fait capable de processer de tels fichiers:
xargs printf '<%s>n' << EOF "fichier avec des espaces" "fichier avec des sauts de lignes" 'avec des "quotes"' avec des backslashes EOF
C'est just que find n'a pas de mode dans lequel il ecrit dans le format reconnu par xargs. C'est pour ca que les find et xargs de GNU et des BSD ont ajouté les options -print0 et -0.
find . -print
ne peut pas etre postprocessé.
find .//. -print
peut etre post processé (car le "//" permet d'identifier le debut d'un fichier) et on peut alors eventuellement l'adapter au format qu'attend xargs:
find .//. -print | sed 's/./&/g' | awk ' { if (NR > 1) { printf "%s", line if ($0 !~ ////) printf "" print "" } line = $0 } END { print line }' | xargs rm -f
-- Stéphane
2005-10-17, 08:12(+02), Jean-Louis Liagre:
[...]
Pour de meilleur performances je préfère :
find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour
des noms de fichiers tres particuliers.
C'est exagéré. J'aurais plutôt écrit: find est compatible avec xargs
sauf pour les noms de fichiers très particuliers créés par des
utilisateurs ou des applications ne respectant pas une convention
existant depuis les origines d'Unix.
[...]
Non. Depuis les origines d'Unix, NL, SPC, TAB les singles
quotes, les double quotes et les backslashs sont autorisés dans
les noms de fichiers. xargs est tout-a-fait capable de processer
de tels fichiers:
xargs printf '<%s>n' << EOF
"fichier avec des espaces"
"fichier
avec des
sauts de lignes"
'avec des "quotes"'
avec des back\slashes
EOF
C'est just que find n'a pas de mode dans lequel il ecrit dans le
format reconnu par xargs. C'est pour ca que les find et xargs de
GNU et des BSD ont ajouté les options -print0 et -0.
find . -print
ne peut pas etre postprocessé.
find .//. -print
peut etre post processé (car le "//" permet d'identifier le
debut d'un fichier) et on peut alors eventuellement l'adapter au
format qu'attend xargs:
find .//. -print | sed 's/./\&/g' | awk '
{
if (NR > 1) {
printf "%s", line
if ($0 !~ /\/\//) printf "\"
print ""
}
line = $0
}
END { print line }' | xargs rm -f
Pour de meilleur performances je préfère : find ./ -type f | xargs rm
Ca ne marche pas. find n'est pas compatible avec xargs sauf pour des noms de fichiers tres particuliers.
C'est exagéré. J'aurais plutôt écrit: find est compatible avec xargs sauf pour les noms de fichiers très particuliers créés par des utilisateurs ou des applications ne respectant pas une convention existant depuis les origines d'Unix. [...]
Non. Depuis les origines d'Unix, NL, SPC, TAB les singles quotes, les double quotes et les backslashs sont autorisés dans les noms de fichiers. xargs est tout-a-fait capable de processer de tels fichiers:
xargs printf '<%s>n' << EOF "fichier avec des espaces" "fichier avec des sauts de lignes" 'avec des "quotes"' avec des backslashes EOF
C'est just que find n'a pas de mode dans lequel il ecrit dans le format reconnu par xargs. C'est pour ca que les find et xargs de GNU et des BSD ont ajouté les options -print0 et -0.
find . -print
ne peut pas etre postprocessé.
find .//. -print
peut etre post processé (car le "//" permet d'identifier le debut d'un fichier) et on peut alors eventuellement l'adapter au format qu'attend xargs:
find .//. -print | sed 's/./&/g' | awk ' { if (NR > 1) { printf "%s", line if ($0 !~ ////) printf "" print "" } line = $0 } END { print line }' | xargs rm -f