Je suis dans un dossier: /var/myfolder
.
À l'intérieur, il y a d'autres dossiers comme: /var/myfolder/A/
/var/myfolder/B/
`/var/myfolder/C/
etc.
À l'intérieur de chacun, il y a des fichiers avec des noms aléatoires. Comment supprimer tous les fichiers de tous les dossiers à l'intérieur/var/myfolder
?
La structure (tous les répertoires, par exemple, A, B, C, etc., à l'intérieur /var/myfolder
) doit rester intacte.
-type f
! =! -type d
Avec zsh, utilisez le
.
qualificatif glob pour faire correspondre uniquement les fichiers normaux:Cela supprime récursivement tous les fichiers réguliers (non masqués) du répertoire actuel et ses sous-répertoires. Ajoutez le
D
qualificatif glob pour supprimer également les fichiers réguliers masqués (et les fichiers normaux dans les répertoires masqués).la source
Vous pouvez courir
rm */*
dans/var/myfolder
la source
rm
ne supprime pas les répertoires - il suffit donc de l'exécuter sur tout.Pour conserver les liens symboliques vers les répertoires:
Et je pense que cela devrait également fonctionner de manière légèrement optimisée s'il y a beaucoup de fichiers qui pourraient avoir besoin de tests dans la version ci-dessus:
la source
find
a une-xtype
option pour cela.la source
Le supprimera tout ce qui se trouve dans les sous-dossiers sans toucher aux sous-dossiers eux-mêmes.
La première
*
est pour les sous - répertoires demyfolder
lui - même (A
,B
...). Le second*
est pour les fichiers dansA
,B
etc.S'il y a plus de dossiers à l' intérieur
A
,B
etc. Exécutez d' abord:rm /var/myfolder/*/*/*
puis exécutezrm /var/myfolder/*/*
.la source
Vous devriez également être en mesure de cd en haut de l'arborescence de répertoires en question, puis exécutez:
et cela devrait supprimer tous les fichiers tout en laissant intacte l'arborescence des répertoires. Les options -print0 et -0 peuvent être omises si vous êtes sûr de ne pas avoir de noms de fichiers ou de répertoires contenant des espaces.
La commande find fait la distinction entre les fichiers (-type f) et les liens (-type l), ce qui devrait laisser les liens intacts, le cas échéant. Non testé cependant. En cas de doute, exécutez:
et voyez si quelque chose apparaît avant d'exécuter la commande find précédente.
la source
rm
drapeau-r, -R, --recursive - remove directories and their contents recursively
s'inscrit dans tout cela?Utilisez simplement la commande ci-dessous:
---------------- OU --------------------------------- -----------------------
Le '*' est synonyme de tous, donc quand vous utiliserez * cela supprimera tout le contenu. Donc, utilisez la commande comme celle-ci ou allez dans le répertoire dans lequel vous souhaitez supprimer tout le contenu et utilisez simplement la commande ci-dessous:
la source