Quelque chose que je sens que je dois savoir à coup sûr: si je ls <something>
, vais rm <something>
supprimer exactement les mêmes fichiers ls
affichés? Existe-t-il des circonstances dans lesquelles des rm
fichiers non visibles pourraient être supprimés ls
? (Ceci est dans le 18.04 bash)
Edit: merci à tous ceux qui ont répondu. Je pense que la réponse complète est une combinaison de toutes les réponses, aussi j’ai accepté la réponse la plus votée comme "la réponse".
Des choses inattendues que j'ai apprises en cours de route:
ls
n'est pas aussi simple qu'on pourrait le penser dans le traitement de ses arguments- Dans une simple installation sans fioritures d’Ubuntu, alias .bashrc
ls
- Ne nommez pas vos fichiers en commençant par un tiret, car ils peuvent ressembler à des arguments de commande. Nommer one -r le demande!
find -delete
mieux que rm
? Vous dites "Voilà pourquoi" , mais je ne vois absolument pas ce que cela signifie. Notez également que votre find
invocation supprimera tous les fichiers de manière récursive dans le répertoire actuel, où rm
ils supprimeront simplement les fichiers du répertoire immédiat. Aussi -name *
est un no-op. Dans l’ensemble, votre conseil
find
est parce que vous pouvez l'exécuter, voir tous les fichiers, puis exécuter la même commande avec -delete
. Puisque vous avez déjà vu les résultats find
, il ne devrait y avoir aucune ambiguïté quant à ce qui sera supprimé (j'aimerais en savoir plus à ce sujet sous la forme d'une réponse)
-delete
" - Mais comment cela vaut-il mieux que d'exécuter ls <filespec>
, suivi de rm <filespec>
(ce que l'OP sait déjà faire)?
find ... -print
abord pour vérifier quels fichiers seront supprimés find ... -delete
, vous supprimerez tout de même les fichiers créés entre les deux commandes. Si vous utilisez les deux -print
et -delete
, vous n'obtenez pas de confirmation, mais simplement un rapport a posteriori de ce qui a été supprimé (et vous pourriez aussi bien l'utiliser rm -v
).
rm
ne pas avoir de--dry-run
drapeau ...