Supprimer les fichiers avec une taille à zéro

Résolu/Fermé
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 2 déc. 2010 à 15:06
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 2 déc. 2010 à 18:14
Bonjour,
comment pourrais-je supprimer les fichiers d'un de mes répertoires qui ont une taille à zéro ?
Egalement, dans le même répertoire j'ai des fichiers tels que :
FichierA
FichierA.txt
FichierB
FichierB.txt
comment pourrais-je supprimer ceux qui n'ont PAS l'extension "txt" ?

Merci d'avance


A voir également:

4 réponses

aragon6980 Messages postés 1198 Date d'inscription vendredi 19 novembre 2010 Statut Membre Dernière intervention 19 avril 2011 252
2 déc. 2010 à 15:18
find . -type f -size 0c -delete
5
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
2 déc. 2010 à 15:37
find . -type f -size 0c m'affiche les fichiers dont la taille est zéro, merci, MAIS le -delete ne fonctionne pas :-/
Erreur :

find: bad option -delete
find: [-H | -L] path-list predicate-list
1
aragon6980 Messages postés 1198 Date d'inscription vendredi 19 novembre 2010 Statut Membre Dernière intervention 19 avril 2011 252
Modifié par aragon6980 le 2/12/2010 à 15:48
essaye ceci alors (remplace rep/A par ton dossier

#!/bin/sh

# suppression de tous les fichiers vides (taille=0) dans /repA
for ERASERHEAD in 'find /repA/ -size 0'
do rm -f $ERASERHEAD
done
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 déc. 2010 à 16:58
Salut,

 for i in *;do if [ ! -s "$i" ]; then echo "$i est vide";fi;done

Si c'est ce que tu espères, remplace "echo..." par la commande adéquate ;-))
1
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
2 déc. 2010 à 17:15
On y est presque :-) Voici ce que j'ai écris :

cd $monrep
for i in *
do 
	if [ ! -s "$i" ] 
	then 
		echo "$i est vide"
	else
		echo "$i n est pas vide"
	fi
done


Le problème c'est qu'il m'affiche même les noms des répertoires ...
Comment je peux parcourir uniquement les fichiers ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 déc. 2010 à 17:35
Tu es sur quel système ? Quelle distrib ?

Quelle est ta version de find ?
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
2 déc. 2010 à 17:45
Je débute moi ... comment je réponds à ces questions ?
Je peux te dire que c'est un serveur Unix avec Solaris 8 et j'utilise la libraire ksh, ça répond à tes questions :-/ ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 déc. 2010 à 18:01
Ok pour Solaris et un shell ksh.
Est-ce que cette commende :

ls -F | grep -v '/$'

Ne te renvoie que les fichiers ?
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
2 déc. 2010 à 18:06
Oui. Je ne sais pas pourquoi mais certains sont suivis d'une étoile .. :
fichiera.txt
e.monscrippt*
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
2 déc. 2010 à 16:05
Ca ne fonctionne pas :-( et je n'ai pas d'erreur :-/

Mais j'ai une autre idée mais j'aurais besoin de toi pour démarrer.
Comment lister les fichiers d'un répertoire ?

La commande suivante : mavar='du -b $Fichier | awk '{ print $1 }''

me retourne la taille d'un fichier, si je pouvais faire une boucle et sortir dans une variable le nom du fichier, il serait facile après de supprimer les fichiers dont la taille est à zéro.
0