Подтвердить что ты не робот

Как найти все файлы с нулевым байтом в каталоге, включая подкаталоги

Как найти все файлы с нулевым байтом в каталоге и даже в подкаталогах?

Я сделал это:

#!/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

но я получаю только результаты в этом файле каталога не всех файлов и если какое-либо имя файла имеет пробел, тогда я получаю только первое слово, за которым следует вкладка

Кто-нибудь может мне помочь?

4b9b3361

Ответ 1

Чтобы напечатать имена всех файлов в и ниже $dir размера 0:

find "$dir" -size 0

Обратите внимание, что не все реализации find будут выдавать выходные данные по умолчанию, поэтому вам может понадобиться сделать:

find "$dir" -size 0 -print

Ответ 2

В дополнение к ответам выше:

Если вы хотите удалить эти файлы

find $dir -size 0 -type f -delete

Ответ 3

Нет, вам не нужно беспокоиться о grep.

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

Ответ 4

Bash 4+ проверено - это правильный способ поиска размера 0:

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

Поиск нескольких расширений файлов размером 0:

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

Примечание. Если вы удалите \(... \), результатом будут все файлы, которые удовлетворяют этому требованию, следовательно, игнорируя размер 0.