Maison > développement back-end > Tutoriel Python > 3 façons de supprimer des fichiers spécifiques dans un répertoire à l'aide du shell bash

3 façons de supprimer des fichiers spécifiques dans un répertoire à l'aide du shell bash

高洛峰
Libérer: 2017-01-09 13:24:22
original
1914 Les gens l'ont consulté

Je suis un nouvel utilisateur Linux. Maintenant, je dois nettoyer les fichiers dans un répertoire de téléchargement. En fait, je veux juste supprimer tous les fichiers du dossier ~/Download/ à l'exception des fichiers aux formats suivants :

1.*.iso - tous les fichiers aux formats iso.
2.*.zip - Tous les fichiers au format zip.

Comment supprimer des fichiers spécifiques dans un shell bash sur un système Linux, OS X ou de type Unix ?

Le shell Bash prend en charge les caractères riches de correspondance de modèles de fichiers tels que :

1.* - correspond à tous les fichiers.
2.? - Correspond à une seule lettre dans un nom de fichier.
3.[...] - Correspond à n'importe quelle lettre entre parenthèses.

Stratégie n°1 : Rencontrez les caractères de correspondance de modèles étendus

Ici, vous devez utiliser la commande shopt intégrée du système pour activer l'option extglob dans le shell, puis vous pouvez utiliser l'option étendue caractères de correspondance de modèle, ces correspondants de modèle sont les suivants :

1.? (liste de modèles) - Correspond au modèle donné zéro ou une fois.
2.*(Liste de modèles) – Correspond au modèle donné zéro ou plusieurs fois.
3. (Liste de modèles) - Faites correspondre le modèle donné au moins une fois.
4.@(liste de modèles) - Faites correspondre le modèle donné une fois.
5.!(liste de modèles) - ne correspond pas au modèle donné.

Une liste de modèles est constituée d'un ou plusieurs modèles (noms de fichiers) séparés par |.

Activez d'abord l'option extgolb :

shopt -s extglob
Copier après la connexion

Supprimez tous les fichiers sauf les fichiers .zip et .iso dans Bash
Le format de syntaxe de la commande rm est :

## 仅保留 file1 文件 ##
rm  !(file1)
 
## 仅保留 file1 和 file2 文件## 
rm  !(file1|file2)
 
## 仅保留 zip 文件 ##
rm  !(*.zip)
 
## 仅保留 zip 和 iso 文件 ##
rm  !(*.zip|*.iso)
 
## 你也可以使用完整的目录 ##
rm /Users/vivek/!(*.zip|*.iso|*.mp3)
 
## 也可以传递参数 ##
rm [选项]  !(*.zip|*.iso)
rm -v  !(*.zip|*.iso)
rm -f  !(*.zip|*.iso)
rm -v -i  !(*.php)
Copier après la connexion

Stratégie n°2 : Utilisez la variable GLOBIGNORE de bash pour supprimer tous les fichiers à l'exception du fichier spécifié

Extrait de la page de manuel bash(1) :

Il s'agit d'un modèle séparé par deux points Une liste qui définit un ensemble de fichiers à ignorer lors de l'expansion du chemin. Si un fichier correspondant à un modèle d'expansion de chemin correspond également à un modèle dans GLOBIGNORE, il est supprimé de la liste de correspondances.

Pour supprimer tous les fichiers et conserver uniquement les fichiers zip et iso, définissez GLOBIGNORE comme suit :

## 只在 BASH 中可行 ##
cd ~/Downloads/
GLOBIGNORE=*.zip:*.iso
rm -v *
unset GLOBIGNORE
Copier après la connexion

Stratégie n°3 : utilisez la commande find pour supprimer tous les autres fichiers et conserver uniquement les fichiers zip et iso files

Si vous utilisez tcsh/csh/sh/ksh ou d'autres shells, vous pouvez essayer de supprimer des fichiers en utilisant la syntaxe de commande find suivante sur les systèmes de type Unix :

find /dir/ -type f -not -name '匹配模式' -delete
Copier après la connexion

ou

## 对于怪异的文件名可以使用 xargs ##
find /dir/ -type f -not -name '匹配模式' -print0 | xargs -0 -I {} rm {}
find /dir/ -type f -not -name '匹配模式' -print0 | xargs -0 -I {} rm [选项] {}
Copier après la connexion

Si vous souhaitez supprimer des fichiers autres que php dans le répertoire ~/source, tapez :

find ~/sources/ -type f -not -name '*.php' -delete
Copier après la connexion

ou

find ~/sources/ -type f -not -name '*.php' -print0 | xargs -0 -I {} rm -v {}
Copier après la connexion

pour ne conserver que * .zip et * La syntaxe du fichier .iso est la suivante :

find . -type f -not \( -name '*zip' -or -name '*iso' \) -delete
Copier après la connexion


Pour plus d'articles shell liés à la suppression de fichiers spécifiques, veuillez faire attention au chinois PHP site web!


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal