GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer tous les fichiers aléatoires sauf 1000 dans un répertoire

Supprimer tous les fichiers aléatoires sauf 1 000 dans un répertoire

Code :

find /path/to/dir -type f -print0 | sort -zR | tail -zn +1001 | xargs -0 rm

Explication :

  1. Répertorier tous les fichiers dans /path/to/dir avec find;
    • print0 :utilisez \0 (caractère nul ) comme délimiteur de ligne ; afin que les chemins de fichiers contenant des espaces/nouvelles lignes ne cassent pas le script
  2. Mélangez la liste des fichiers avec sort;
    • -z :utilisez \0 (caractère nul) comme délimiteur, au lieu de \n (une nouvelle ligne)
    • -R :ordre aléatoire
  3. Supprimez les 1 000 premières lignes de la liste aléatoire avec tail;
    • -z  :traiter la liste comme délimitée par des zéros (comme avec sort )
    • -n +1001  :afficher les lignes à partir de 1 001 (c'est-à-dire omettre les 1 000 premières lignes)
  4. xargs -0 rm - supprimer les fichiers restants ;
    • -0 :délimité par des zéros, encore une fois

Pourquoi c'est mieux que la solution de Quixotic* :

  1. Fonctionne avec les noms de fichiers contenant des espaces/nouvelles lignes.
  2. N'essaie pas de créer des répertoires (qui existent peut-être déjà, d'ailleurs)
  3. Ne déplace aucun fichier, ne touche même pas les 1000 "fichiers chanceux" en plus de les lister avec find .
  4. Évite de manquer un fichier en cas de sortie de find ne se termine pas par \n (nouvelle ligne) pour une raison quelconque.

* - crédit à Don Quichotte pour | sort -R | head -1000 , m'a donné un point de départ.


Linux
  1. Rendre tous les nouveaux fichiers d'un répertoire accessibles à un groupe ?

  2. Comment supprimer tous les fichiers avec une extension particulière dans un dossier particulier ?

  3. Utilisez Rechercher pour trouver certains répertoires et supprimer tous les fichiers qu'il contient sauf un répertoire ?

  4. Script bash pour supprimer tous les fichiers sauf N lorsqu'ils sont triés par ordre alphabétique

  5. Supprimer le référentiel Git, mais conserver tous les fichiers

Comment changer toutes les occurrences d'un mot dans tous les fichiers d'un répertoire

commande linux pour vider tous les fichiers d'un répertoire

Trouver tous les fichiers de zéro octet dans le répertoire et les sous-répertoires

Supprimez tous les fichiers sauf les 3 plus récents dans le script bash

Comment supprimer tous les fichiers d'un répertoire sauf certains ?

Autoriser tous les utilisateurs à créer des fichiers dans un répertoire, mais seul le propriétaire peut supprimer