На этот вопрос уже есть ответ здесь:
Я пытаюсь написать скрипт, который может искать пустые файлы в текущем каталоге, а затем подсчитывать их количество. Я бы также предпочел, чтобы файлы были по одному в каждой строке вывода. Например, вывод программы выглядел бы так:
Empty files are: file1.pdf file4.cpp example-file Number of empty files: 3
Если Вы не должны рекурсивно вызывать (т.е. убывание в / считают пустые файлы в подкаталогах), затем, можно просто использовать стандартные тесты файла, например,
n=0
for f in *; do
[[ -f "$f" ]] && [[ ! -s "$f" ]] && { echo "$f"; ((n++)); }
done
echo "Number of empty files: $n"
От help test
:
-f FILE True if file exists and is a regular file.
-s FILE True if file exists and is not empty.
Размер пустого файла обычно является нулем. Так запущение следующего скрипта поможет найти пустые файлы
find /home/ -type f -size oc -exec ls {} \;
Как единицы, которые можно использовать:
b – for 512-byte blocks (this is the default if no suffix is used)
c – for bytes
w – for two-byte words
k – for Kilobytes (units of 1024 bytes)
M – for Megabytes (units of 1048576 bytes)
G – for Gigabytes (units of 1073741824 bytes)
я создал некоторые пустые файлы и сохранил его в следующем каталоге
/home/um/Documents/hello
, Теперь позволяет, видят все пустые файлы, которые я создал
cd /home/um/Documents/hello
, Эта команда изменяет каталог на привет
ls -sh
, Это перечисляет все файлы включая размер в человекочитаемом формате в /home/um/Documents/hello
16K empty.odt 12K empty.pdf 8.0K empty.txt 16K excel.ods
Однако, размер этих файлов находится в диапазоне 0 - 20 Кбит, я уверен, что они регистрируют, пуст
, Таким образом, возможно отсортировать все файлы на основе размера.
find /home/um/Documents/hello -type pdf -size -20k -exec ls -lh {} \;
Это вид все файлы, которые меньше, чем 20 КБ
Можно использовать эти find
команда для поиска пустых файлов
find . -maxdepth 1 -type f -empty | tee /dev/tty | wc -l
, Где
-maxdepth 1
только взгляд в текущем каталоге и не подкаталогах -type f
только ищет файлы, не каталоги -empty
, проверки на пустые файлы tee /dev/tty
отправляют имя файла на терминал, и в туалет wc -l
рассчитывают, файлы Видят man find
для получения дополнительной информации.