• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • L'une des tâches d'administration de base du système de fichiers consiste à créer, modifier et supprimer différents types de fichiers et de répertoires. Connaître certains outils et concepts de base pour la suppression de fichiers est pratique et peut vous faire gagner du temps.

    Linux propose plusieurs outils qui peuvent nous aider à accomplir les tâches de suppression de fichiers. Souvent, nous devons supprimer non seulement un seul, mais un ensemble de fichiers et de répertoires, en fonction de certains critères. Il est utile d'en connaître quelques commandes courantes et leurs combinaisons pour accomplir notre tâche facilement.

    • Utilisez les commandes ci-dessous avec précaution, en particulier celles qui utilisent des expressions régulières ou certains modèles de recherche avec la commande find. Une expression ou un modèle incorrect peut supprimer des données / fichiers système essentiels ou simplement des fichiers non souhaités.
    • Sécurisez toujours la dernière sauvegarde des données importantes et des fichiers système.
    • Soyez prudent avant d'exécuter de telles commandes, en particulier lors de son exécution avec Sudo ou en tant que superutilisateur (root).

    Supprimer à l'aide de la dissociation

    Pas si populaire. Pour supprimer définitivement un seul fichier, nous pouvons utiliser unlink commander.

    $ unlink {file-name}

    Supprimer un seul fichier

    Il existe une commande plus couramment utilisée pour supprimer des fichiers, à savoir, rm commande, qui prend en charge la suppression d'un ou plusieurs fichiers simultanément.

    $ rm {file-name}

    rm vous invite à confirmer la suppression de fichiers pour les fichiers protégés en écriture, sinon il procède à la suppression directe du fichier. Faire rm toujours demander avant de supprimer un fichier, utilisez -i drapeau:

    $ rm -i {file-name}

    rm la commande supprime sans afficher de message à l'écran. Pour lister quoi rm commande est en train de faire, utilisez rm avec -v drapeau.

    $ rm -v {file-name}

    Pour supprimer des fichiers protégés en écriture sans demander de confirmation, utilisez -f drapeau.

    $ rm -f {file-name}

    Supprimer plusieurs fichiers

    Plusieurs fichiers peuvent être supprimés en spécifiant plusieurs noms de fichiers rm comme arguments.

    $ rm {file-name-1} {file-name-2} {file-name-3} ... {file-name-N}

    rm prend également en charge les expressions régulières. Si vous souhaitez supprimer tous les fichiers nommés file-name-*, vous pouvez utiliser:

    $ rm file-name-*

    Nous pouvons également spécifier plusieurs fichiers à l'aide d'expressions régulières. Si nous voulons supprimer trois fichiers qui correspondent file-name-1, file-name-2 et de file-name-3, nous pouvons utiliser quelque chose comme:

    $ rm file-name-[123]

    Supprimer le répertoire

    Un répertoire vide peut être supprimé en utilisant rm commande avec -d option.

    $ rm -d {dir-name}

    Les options prises en charge pour la suppression de fichiers peuvent également être combinées avec la suppression de répertoires à l'aide de -d drapeau aussi. Par exemple:

    $ rm -idv {dir-name}

    Pour supprimer un répertoire non vide, utilisez -r drapeau.

    $ rm -r {dir-name}

    Si vous ne voulez aucune invite avant de supprimer le répertoire et son contenu, utilisez -rf drapeau. Cela supprimera tout ce qui se trouve dans le répertoire, y compris le répertoire lui-même, sans aucune confirmation. Soyez prudent lorsque vous l'utilisez en particulier en tant que root.

    $ rm -rf {dir-name}

    Rechercher et supprimer des fichiers

    Pour des exigences plus complexes, nous pouvons utiliser le commande find avec différentes options. Pour supprimer tous les fichiers correspondant au modèle {pattern} à l'intérieur d'un chemin donné par {dir-to-search}

    $ find {dir-to-search} -type f -name {pattern} -exec rm -f {} \;

    Mise en situation :

    $ find /var/tmp -type f -name "*.tmp" -exec rm -f {} \;

    Si nous voulons supprimer tout ce qui correspond à un modèle {pattern} y compris les répertoires à l'intérieur {dir-to-search}, nous pouvons légèrement modifier la commande ci-dessus comme:

    $ find {dir-to-search} -name {pattern} -exec rm -rf {} \;

    Les versions modernes de la commande find prennent en charge la fonction de suppression en interne. Ici -delete flag remplace la commande rm pendant -depth indique à la commande find de traiter d'abord le contenu du répertoire avant le répertoire lui-même:

    $ find {dir-to-search} -type f -name {file-name-pattern} -depth -delete

    L'exemple ci-dessus est plus efficace lorsque vous travaillez avec un grand nombre de fichiers car il ne génère pas de nouveau processus externe pour rm commande pour chaque fichier correspondant. Mais toutes les versions de find commande (encore) peut prendre en charge -delete drapeau. Comme alternative, nous avons la possibilité d'utiliser xargs commande avec find comme indiqué dans l'exemple suivant ci-dessous:

    $ find {dir-to-search} -type f -name {pattern} -print0 | xargs -0 rm

    Ou utilisez la commande exec + terminator pour enchaîner tout ce qui est trouvé par la commande find comme xargs:

    $ find {dir-to-search} -name {pattern} -exec rm -rf {} +

    Par défaut, la commande find utilise -print drapeau que nous omettons généralement d'écrire. Avec xargs, nous devons éviter new-line caractère entre chaque nom de fichier. En tant que tel -print0 le drapeau indique à la recherche d'imprimer null caractère après chaque nom de fichier trouvé.

    De même, nous spécifions -0 drapeau avec xargs de sorte que les deux commandes se couplent. rm la commande ici supprime le fichier transmis par piped find contribution. Par exemple, la commande ci-dessous recherchera et supprimera tout *.tmp fichiers du répertoire personnel de l'utilisateur actuel (donné par ~ symbole).

    $ find ~ -name "*.tmp" -print0 | xargs -0 rm

    find La commande offre plusieurs façons de rechercher des fichiers et des répertoires, y compris la propriété, l'autorisation, l'horodatage, etc. Nous allons couvrir quelques-unes de ces façons qui peuvent nous aider dans des tâches de suppression de fichiers spécifiques.

    Rechercher et supprimer des fichiers par un utilisateur

    Pour supprimer tout ce qui se trouve dans un répertoire donné appartenant à un user, Utiliser:

    $ find {dir-to-search} -mindepth 1 -user {user-name} -delete

    Dans l'exemple ci-dessus, -mindepth flag avec la valeur 1 empêche le répertoire donné par {dir-to-search} de suppression s'il correspond au modèle et aux critères de recherche. Ou pour supprimer tout ce qui se trouve dans un répertoire donné appartenant à un group, Utiliser:

    $ find {dir-to-search} -mindepth 1 -group {group-name} -delete

    Si vous ne souhaitez pas parcourir les sous-répertoires sous le chemin de recherche, vous avez également la possibilité d'utiliser -maxdepth avec une valeur de profondeur de répertoire appropriée.

    Voici un exemple d'exécution:

    $ find tempdir/ -mindepth 1 -maxdepth 1 -user abhisheknair -group abhisheknair -delete

    Si vous souhaitez spécifier user-id et de group-id à la place, vous pouvez essayer quelque chose comme:

    $ find {dir-to-search} -mindepth 1 -uid {user-id} -gid {group-id} -delete

    Rechercher et supprimer des répertoires vides

    Pour supprimer tous les répertoires vides dans un chemin donné {dir-to-search}, vous pouvez utiliser:

    $ find {dir-to-search} -type d -empty -delete

    Au lieu de cela, pour supprimer tous les fichiers vides dans un chemin donné {dir-to-search}, Utiliser:

    $ find {dir-to-search} -type f -empty -delete

    Rechercher et supprimer des fichiers plus anciens que X

    Parfois, vous devrez peut-être supprimer des fichiers plus anciens que x journées. find a des options pour lire la création du fichier (ctime), accès (atime) et modification (mtime) fois. On peut utiliser mtime option avec rechercher pour rechercher et supprimer les fichiers modifiés plus de x il y a quelques jours.

    $ find {dir-to-search} -type f -mtime +{X} -delete

    Par exemple, pour supprimer tous les fichiers avec le journal d'extension à l'intérieur /var/tmp avec une heure de modification d'il y a 30 jours ou plus, nous pouvons utiliser:

    $ find /var/tmp -name "*.log" -type f -mtime +30 -delete

    Rechercher et supprimer des fichiers avec autorisation

    Maintenant, nous pouvons également supprimer des fichiers en fonction d'une autorisation spécifique, comme:

    $ find {dir-to-search} -name {pattern} -perm {NNN} -delete

    Mise en situation :

    $ find /var/tmp -name "temp*" -perm 755 -delete

    Ou si nous voulons utiliser une forme symbolique pour l'autorisation, utilisez:

    $ find {dir-to-search} -name {pattern} -perm u={rwx},g={rwx},o={rwx} -delete

    Mise en situation :

    $ find /var/tmp -name "temp*" -perm u=rwx,g=rw,o=rw -delete

    résumer

    Offres Linux unlink, rm et de rmdir commandes qui sont simples et peuvent être facilement étendues avec l'utilisation d'expressions régulières. Pour des besoins plus avancés, vous avez la possibilité d'utiliser une combinaison d'outils tels que find et de xargs pour réaliser ce dont vous avez besoin. Outre les exemples de cet article, vous avez la possibilité d'utiliser la recherche avec l'un de ses indicateurs disponibles pour personnaliser votre recherche. Reportez-vous aux pages de manuel pour les commandes respectives pour en savoir plus à leur sujet.

    Toujours courir trouver des commandes sans rm or -delete flag et analysez sa sortie pour savoir quels fichiers ou répertoires seront impactés par l'exécution d'une commande réelle. Avoir une configuration et une politique de sauvegarde appropriées aide non seulement en cas de suppression accidentelle, mais également en cas de défaillance matérielle et cyber-attaques.