Disons que j'ai une arborescence de répertoires comme celle-ci:
FOLDER:
file1
file2
file3
Subfolder1:
file1
file2
Subfolder2:
file1
file2
Si j'utilisais rm -r FOLDER/*
, tout dans FOLDER serait supprimé, y compris les sous-répertoires. Comment puis-je supprimer tous les fichiers dans FOLDER et dans ses sous-répertoires sans supprimer les répertoires réels?
Si votre version de
find
ne prend pas en charge,-delete
vous pouvez utiliser ce qui suit pour supprimer tous les fichiers du répertoire actuel et ci-dessous.la source
-exec rm {} +
serait plus rapide, surtout s'il y a beaucoup de fichiers.find . ! -type d -exec rm {} +
supprime également les liens sym.find
ne prend pas en charge,-delete
elle ne le prend probablement pas non-exec ... {} +
plus. La façon recommandée de traiter cela estfind ... -print0 | xargs -r0 rm
(si l'on s'attend à de nombreuses correspondances potentielles).-exec ... {} +
est POSIX, mais-delete
ne l'est pas. (Ni d'ailleurs-print0
, d'ailleurs.)find
implémentations non POSIX qui ont pris en charge-print0
mais pas-exec ... {} +
(je ne m'en souviens pas-delete
cependant). L'un était sous OS X, l'autre sous Solaris (il y a quelques années sur un système mis à jour de façon très conservatrice). Vous pouvez également remplacer-print0
par-printf '%p\0'
. Quoi qu'il en soit, c'est Ask Ubuntu et non Unix et Linux et Ubuntu utilise GNU find depuis toujours.