Solution 1 :
find . -maxdepth 1 -type f -exec rm -f {} \;
cela prend tout simplement trop de temps (un exec de rm par fichier).
celui-ci est beaucoup plus efficace :
find . -maxdepth 1 -type f -print0 | xargs -r0 rm -f
comme il prend autant de noms de fichiers comme argument de rm que possible, puis exécute rm avec le prochain chargement de noms de fichiers... il peut arriver que rm ne soit appelé que 2 ou 3 fois.
Solution 2 :
Dans le cas où vous ne pouvez pas supprimer le répertoire, vous pouvez toujours utiliser find.
find . -maxdepth 1 -type f -exec rm -f {} \;
Cela supprimera tous les fichiers du répertoire courant, et uniquement le répertoire courant (pas les sous-répertoires).
Solution 3 :
Ces deux solutions contourneront le problème. Il y a une analyse des performances respectives de chaque technique ici.
find . -name WHATEVER -exec rm -rf {} \;
ou
ls WHATEVER | xargs rm -rf
Le problème vient du fait que bash développe "*" avec chaque élément du répertoire. Ces deux solutions fonctionnent à tour de rôle sur chaque fichier.
Solution 4 :
J'ai pu le faire en sauvegardant un niveau :
cd ..
Et en cours d'exécution :
rm directory name -rf
Et puis recréer le répertoire.
Solution 5 :
Toutes ces invocations de find sont très sympas mais je me souviens rarement exactement de la nomenclature nécessaire quand je suis pressé :à la place j'utilise ls. Comme quelqu'un le mentionne, ls . fonctionnerait mais je préfère ls -1 comme dans :
ls -1 | xargs -n 100 rm -rf
Le chiffre -n xxx est assez sûr pour jouer avec car le dépassement du maximum sera automatiquement corrigé (si size-max est dépassé; voir -s ) ou si le args-max pour une application est dépassé, il sera généralement plutôt évident.
Il convient de noter que grep est pratique à insérer au milieu de cette chaîne lorsque vous souhaitez uniquement supprimer un sous-ensemble de fichiers dans un grand répertoire et que vous ne souhaitez pas utiliser find pour une raison quelconque.
Cette réponse suppose que vous utilisez les utilitaires du noyau Gnu pour vos ls, xargs &etc.