Je veux supprimer tout fichier qui ressemble wordpress-891.sql
au répertoire actuel (pas à l'intérieur des sous-répertoires).
Fera rm wordpress-*.sql
l'astuce ou supprimera-t-il également les correspondances des sous-répertoires?
command-line
bash
HorusCoding
la source
la source
rm
ne fait pas d'extension de nom de fichier ...rm "foo*"
essaierait de supprimer un fichier avec un astérisque littéral dans le nom.Réponses:
Non Globulation normale
*
n'est pas récursive et elle ne l'est pas non plusrm
.Si un nom de répertoire correspond, il ne sera pas supprimé - vous avez besoin du
-r
drapeau pour supprimer un répertoire.Il est donc prudent de le faire si vous êtes sûr de vouloir supprimer ces fichiers.
Vous pouvez également rendre
rm
interactifpuis il vous demandera une confirmation avant de supprimer chaque fichier
la source
Oui, il fait l'affaire pour vous et supprime tous les fichiers avec ce schéma dans le répertoire actuel. Et NON, il ne supprime pas les fichiers dans les sous-répertoires.
Chaque fois que vous n'êtes pas sûr de ce qui se passe lorsque vous exécutez une commande comme:
puis lancez-le en utilisant
ls
:les fichiers que vous voyez en sortie sont ceux qui seront supprimés.
Lorsque vous essayez d'obtenir une liste comme:,
foo*
il est préférable d'utiliser le-d
commutateur avecls
pour éviter de répertorier les fichiers contenant un répertoire nomméfoobar/
etc.Cette astuce fonctionne pour les commandes qui ne sont pas utilisées pour effectuer le travail de manière récursive.
L'autre chose que vous pouvez faire est de taper votre entrée souhaitée, par exemple:
wordpress-*
puis appuyez sur Ctrl+ Alt+ *, et maintenant toutes les correspondances sont tapées automatiquement devant votre commande.la source
printf "%s\n" wordpress-*.sql
echo rm file*
.-rf
rm ./*
ourm -- *
.xargs -0
@DavidFoersterls foo*
et que vous avez un répertoire appeléfoobar
, vous obtenez également une liste du contenu de ce répertoire, donc plainls
n'est pas vraiment le meilleur moyen de savoir ce qu'ilrm
va frapperNon,
rm
ne récurrente pas via les sous-répertoires.Voir Supprimer les fichiers correspondants dans tous les sous-répertoires - SuperUser pour les méthodes de suppression des fichiers dans les sous-répertoires.
Si vous craignez de supprimer accidentellement quelque chose d'important, utilisez
gvfs-trash
(qui envoie les fichiers dans la corbeille) au lieu derm
(qui supprime définitivement les fichiers).la source
gvfs-trash
mention apprise quelque chose aujourd'hui à peine l'utiliser ...Si vous souhaitez rechercher et supprimer tous les fichiers correspondants tels que
wordpress-*.sql
, vous pouvez utiliser lafind
commande. :)Par exemple, vous souhaitez supprimer tous les fichiers correspondants avec
wordpress-*.sql
undertest_dir
, procédez comme suit.Chaque fois que le
find
programme trouve vraiment un fichier correspondant, il essaie d'exécuter une commande après l'-exec
option. Dans ce cas,rm -f {}
sera exécuté et{}
sera remplacé par le nom du fichier de correspondance. Par exempleVous pouvez également définir la profondeur des sous-répertoires avec
-maxdepth
option.Veuillez noter que vous devez spécifier l'
-maxdepth
option avant les autres options. Sinon, vous pouvez obtenir les résultats que vous ne voulez vraiment pas voir.la source
-maxdepth
. Utilisez-exec rm -f {} +
plutôt que-exec \;
, ou mieux encore, juste-delete