Supprimer tous les fichiers dont les noms de fichiers contiennent une chaîne particulière?

22

J'ai changé mon thème wordpress. L'ancien a créé tellement d'images sur le serveur. Mon nouveau thème n'en a pas besoin, je veux donc tout supprimer. Comment puis je faire ça?

Par exemple:
Image par défaut:12_angry_men_lone_holdout.jpg

Je souhaite supprimer:

12_angry_men_lone_holdout-290x166.jpg
12_angry_men_lone_holdout-700x300.jpg 
12_angry_men_lone_holdout-50x50.jpg

Utilisation de Digitalocean, Ubuntu 13.10.

Ibrahim Mumcu
la source
sur un type de terminal man rmpour voir la page de manuel de la commande rm.
hmayag
On dirait que ces images sont les vignettes créées automatiquement à partir des images téléchargées dans votre bibliothèque multimédia WorldPress. Si c'est le cas, ne supprimez pas ces fichiers dans le terminal du serveur. Ouvrez votre page d'administration WordPress, ouvrez 'Paramètres'> 'Média'. Réglez-y les tailles d'images miniatures souhaitées. Installez ensuite le plugin Régénérer les vignettes et recréez toutes les vignettes (cela peut prendre quelques minutes, selon la quantité d'images dans votre bibliothèque multimédia).
Bob

Réponses:

22

S'ils se trouvent dans le même dossier, utilisez le caractère générique * pour y parvenir:

rm *text*

textest la chaîne que contient le nom de fichier.

myhau
la source
En fait, ce n'est pas un répertoire, mais je peux le faire un par un pour l'instant. Merci!
Ibrahim Mumcu
27

Utilisez findpour rechercher et supprimer de manière récursive des fichiers avec "texte" dans leurs noms:

find -type f -name '*text*' -delete

Vous pouvez également vouloir exécuter find -type f -name '*text*'(sans le -delete) avant cela pour vous assurer que vous ne supprimerez aucun fichier que vous n'aviez pas l'intention de supprimer.


En fait, vous pouvez placer des caractères génériques n'importe où dans la chaîne de recherche, donc -name '12_angry_men_lone_holdout-*.jpg' pourrait être plus approprié dans votre cas.

n.st
la source
N'est-ce pas nécessaire de représenter le chemin du fichier
Avinash Raj
@AvinashRaj Si le premier paramètre n'est pas un chemin, findrecherche le répertoire de travail actuel.
2014
Quelqu'un a mis. juste après trouver pour rechercher dans le répertoire de travail actuel.
Avinash Raj
1
@AvinashRaj Ce serait redondant. Selon man find: Si aucun chemin n'est indiqué, le répertoire courant est utilisé.
2014
@AvinashRaj Active la POSIX spécification pour findréellement ne nécessitent un chemin. La valeur par défaut .est une modification ajoutée par GNU find. Si c'était Unix et Linux , j'ajouterais cela à ma réponse, mais comme Ubuntu est livré avec GNU find par défaut, je préfère ne pas confondre les nouveaux arrivants plus que nécessaire. ;)
n.st
1

Essaye ça:

rm -rf 12_angry_men_lone_holdout-*

Cela keep 12_angry_men_lone_holdout.jpgsupprimera et supprimera les fichiers avec des dimensions (290x166)

Et n'oubliez pas

rm -rf 12_angry_men_lone_holdout.*

supprimera également le fichier par défaut, dont vous aviez besoin.

Aneesh
la source
0
find . -type f -name '*[0-9]x[0-9]*' -delete

Exécutez cela dans le répertoire parent. Cela va supprimer tous les fichiers qui ont un chiffre suivi d'un caractère «x» suivi d'un autre chiffre dans leur nom.

Soyez toujours prudent, cela pourrait également supprimer les fichiers d'origine, si leur nom contient le modèle ci-dessus (peu probable). Exécutez-le d'abord sans '-delete' pour voir si vous avez des fichiers qui portent un tel nom. Si tel est le cas, il vous suffira de trouver un modèle plus restrictif.

Tamas
la source