Je voudrais supprimer tous les fichiers, mais conserver la structure des dossiers. Y a-t-il un moyen?
REMARQUE: (j'utilise GNU bash 4.1.5).
bash
bash-script
Tom Brito
la source
la source
Réponses:
Essaye ça:
Cela supprimera chaque fichier, à l'exception des répertoires, sous le répertoire de travail actuel. Soyez extrêmement prudent avec cette commande.
Si la version de
find
sur votre machine le prend en charge, vous pouvez également utiliserla source
find
commande ne voit jamais les guillemets. Il voit simplement le{}
marqueur comme un argument.-exec command {} +
" & this "-exec command ;
". J'ai utilisé le\;
passé dans le passé, jamais le '{}'.find
. Je pense que les modèles sont destinés à montrer les arguments dont lafind
commande a besoin et ne se soucient de rien lié au shell.Vous pouvez utiliser la commande
find
pour localiser chaque fichier mais conserver la structure du répertoire:Selon ce Q&A Unix et Linux intitulé: gnu trouver et masquer le {} pour certains shells - lequel? , échapper au
{}
avec des ticks simples ('
) ne semble plus nécessaire avec les shells modernes tels que Bash.la source
Le moyen facile de supprimer récursivement tous les fichiers normaux du répertoire et des sous-répertoires actuels:
Seul zsh a des qualificatifs de globalisation pour faire correspondre les fichiers par type. Cependant, la
rm
commande ne fonctionne pas sur les répertoires, donc en bash, vous pouvez utiliserCela ne fonctionne pas pour les commandes autres que
rm
si. En général, vous pouvez utiliserfind
:ou si votre
find
ne prend pas en charge-delete
:la source
J'avais une exigence similaire de supprimer des fichiers d'un chemin et de ses sous-répertoires (filtrage par le temps) sans supprimer la structure du répertoire.
Et j'ai utilisé le format ci-dessous qui a fonctionné pour moi.
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Syntex: find (chemin du fichier) -mtime (supérieur ou inférieur à jours) -type f -exec rm {} \;
-type: mentionner le type de fichier "f" pour le répertoire "d" -exec: exécuter la commande rm: supprimer {}: sortie de la commande find
Remarque: testez-le avant de l'utiliser. N'hésitez pas à corriger ou à mettre à jour si j'ai raté quelque chose.
la source
find ... rm
structure de base a déjà été couverte, je ne suis pas sûr que ce soit une contribution précieuse en tant que nouvelle réponse à cette question.