web-dev-qa-db-fra.com

Comment trouver tous les fichiers de zéro octet dans un répertoire, y compris les sous-répertoires

Comment trouver tous les fichiers de zéro octet dans un répertoire et même dans des sous-répertoires?

Je l'ai fait:

#!/bin/bash
lns=`vdir -R *.* $dir| awk '{print $8"\t"$5}'`
temp=""
for file in $lns
do
  if test $file = "0"
  then
    printf $temp"\t"$file"\n"
  fi
 temp=$file
done

mais je n'obtiens que des résultats dans ce fichier de répertoire, pas tous les fichiers et si un nom de fichier a un espace, je n'obtiens que le premier mot suivi d'un onglet

Quelqu'un peut-il m'aider?

64
Civa

Pour imprimer les noms de tous les fichiers dans et sous $ dir de taille 0:

find "$dir" -size 0

Notez que toutes les implémentations de find ne produiront pas de sortie par défaut. Vous devrez donc peut-être:

find "$dir" -size 0 -print
143
William Pursell

En plus des réponses ci-dessus:

Si vous souhaitez supprimer ces fichiers

find $dir -size 0 -type f -delete
27
LinuxLuigi

Non, vous n'avez pas à vous soucier de grep.

find $dir -size 0 ! -name "*.xml"
7
Batcher

Bash 4+ testé - Ceci est la bonne façon de rechercher une taille 0:

find /path/to/dir -size 0 -type f -name "*.xml"

Rechercher plusieurs extensions de fichier de taille 0:

find /path/to/dir -size 0 -type f \( -iname \*.css -o -iname \*.js \)

Remarque: Si vous supprimiez\(... \), tous les fichiers répondant à cette exigence seraient alors ignorés, en ignorant la taille 0.

3
Mike Q