Suppression de certaines extensions avec Bash (rapidement)

3

J'ai vu d'autres discussions sur la suppression d'une certaine extension dans un répertoire. Cependant, lorsque je l'essaie, cela semble fonctionner, mais il faut beaucoup de temps pour parcourir les répertoires et dire "Autorisation refusée" sur ceux du système. Tout ce que je veux, c'est un script bash qui parcourt tout ou partie de l'ordinateur et supprime une certaine extension. Si python serait plus rapide, c'est très bien.

utilisateur1920468
la source
1
serait-il dangereux de supprimer simplement une certaine extension ... qu'est-ce qui pourrait mal tourner?
Qu'entendez-vous par extension? Vous aimez un module Python?
Natan
Je veux dire une extension de fichier.

Réponses:

2

Vous pouvez simplement utiliser trouver, je suppose.

find / -name "*.myextension" -exec rm {} \;

Mais bien sûr, rechercher un disque dur entier (ou une partition ..) à partir de / est une longue tâche, et vous obtiendrez des erreurs d’ autorisation refusée tant que vous n’exécutez pas cette action en tant que root.

cmc
la source
Python serait-il plus rapide?
1
Parce que c'est une fourchette pour chaque single rm. Vous devriez soit utiliser -exec rm -- {} +, soit la recherche GNU -delete.
Ormaaj
Ou lancez la sortie vers xargs rm, en faisant un effort approprié pour gérer les noms de fichiers avec des espaces
glenn jackman
@glennjackman Pouvez-vous s'il vous plaît exactement quelle commande utiliser pour faire la même chose, mais le faire fonctionner avec des espaces? Où placerais-je xargs rm?
user1920468
1

en utilisant xargs, en supposant que vous avez GNU find et xargs:

find / -name \*.myextension -print0 | xargs -0 rm

Cette méthode utilise le caractère null \0comme séparateur entre les noms de fichiers: comme newline est un caractère légal dans un nom de fichier, la lecture de la sortie de find, ligne par ligne, n'est pas sûre à 100%.

Glenn Jackman
la source
Il dit file: invalid option -- a file: invalid option -- t Usage: file [-bchikLNnprsvz0] [-e test] [-f namefile] [-F separator] [-m magicfiles] [-M magicfiles] file... file -C -m magicfiles Try fichier --help 'pour plus d'informations. »
user1920468
Je suis sur un Mac, est-ce que ça pourrait être le problème?
user1920468
Non, faute de frappe, ne devrait findpas êtrefile
glenn jackman
Je suis désolé de vous avoir dérangé, mais j'ai nommé un fichier "with spaces.myextension" et je l'ai mis sur le bureau. J'ai ensuite fait la commande find /users/<myusername>/Desktop -name \*.myextension -print0 | xargs -0 rmet le fichier est resté là.
user1920468
Le voyez-vous avec find /users/<myusername>/Desktop -name \*.myextension -print?
Glenn Jackman