Comment supprimer en toute sécurité tous les fichiers ayant une extension spécifique (par exemple, l'extension de l'ordinateur) ? .bak
) du répertoire actuel et de tous les sous-dossiers en utilisant une seule ligne de commande ? Simplement, j'ai peur d'utiliser rm
puisque je l'ai mal utilisé une fois et maintenant j'ai besoin de conseils.
Réponses
Trop de publicités?Vous n'avez même pas besoin d'utiliser rm
dans ce cas, si vous avez peur. Utilisez find
:
find . -name "*.bak" -type f -delete
Mais utilisez-la avec précaution. Courez d'abord :
find . -name "*.bak" -type f
pour voir exactement quels fichiers vous allez supprimer.
Aussi, s'assurer que -delete
est le dernier argument dans votre commandement. Si vous le mettez avant le -name *.bak argument
, cela va tout effacer .
Voir man find
y man rm
pour plus d'informations et voir également cette question connexe sur SE :
Exécutez d'abord la commande shopt -s globstar
. Vous pouvez exécuter cela sur la ligne de commande, et cela n'aura d'effet que dans cette fenêtre Shell. Vous pouvez le mettre dans votre .bashrc
et tous les obus nouvellement lancés le reprendront. L'effet de cette commande est de rendre **/
correspond aux fichiers du répertoire courant et de ses sous-répertoires de manière récursive (par défaut, **/
signifie la même chose que */
: uniquement dans les sous-répertoires immédiats). Ensuite :
rm **/*.bak
(ou gvfs-trash **/*.bak
ou quoi que ce soit d'autre).
Pour moi, la suppression de fichiers n'est pas quelque chose que vous devriez utiliser. rm
pour. Voici une alternative :
sudo apt-get install gvfs # install a tool that allows you to put stuff in the trash
alias "trash"="gvfs-trash" # you can also put this in .bash_aliases or simply use the command without alias
trash *.bak # trash the files (thus moving them to the trash bin)
Comme le dit Flimm dans les commentaires :
Le paquet
trash-cli
fait la même chose quegvfs-trash
sans la dépendance à gvfs.
Donc :
sudo apt-get install trash-cli
Vous n'avez pas besoin de créer un alias pour cela, car la fonction trash-cli
fournit une commande trash
qui fait ce que nous voulons.
Comme Eliah Kagan l'explique clairement dans des commentaires détaillés, vous pouvez également rendre cette méthode récursive en utilisant les éléments suivants find
. Dans ce cas, vous ne pouvez pas utiliser d'alias, donc les commandes ci-dessous supposent que vous avez installé trash-cli
. Je résume les commentaires d'Eliah :
Cette commande recherche et affiche tous les .bak
les fichiers et les liens symboliques n'importe où dans le répertoire actuel ou ses sous-répertoires ou en dessous.
find . -name '*.bak' -xtype f
Pour les supprimer, ajoutez un -exec
avec le trash
commandement :
find . -name '*.bak' -xtype f -exec trash {} +
-xtype f
sélectionne les fichiers et les liens symboliques vers les fichiers, mais pas les dossiers. Pour supprimer aussi les dossiers .bak, supprimez cette partie, et utilisez -execdir
ce qui permet d'éviter cannot trash non-existent
des erreurs pour .bak
fichiers à l'intérieur .bak
les répertoires :
find . -name '*.bak' -execdir trash {} +
- Réponses précédentes
- Plus de réponses