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.


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.


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%.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.