Скрипт для поиска пустых файлов в текущем каталоге? [dубликат]

У этого вопроса уже есть ответ здесь: Как найти все пустые файлы и папки в определенном каталоге, включая файлы, которые просто выглядят пустыми, но не являются? 2 ответа

Я пытаюсь написать скрипт, который может искать текущий каталог для пустых файлов, за которым следует подсчет пустых файлов. Я также предпочел бы, чтобы файлы были по одному на строку вывода. Например, выход программы будет выглядеть так:

Empty files are: file1.pdf file4.cpp example-file Number of empty files: 3
0
задан 5 April 2017 в 04:51

10 ответов

Размер пустого файла обычно равен нулю. Поэтому запуск следующего скрипта поможет найти пустые файлы

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 Эта команда меняет каталог 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 кб

0
ответ дан 18 July 2018 в 15:31

Вы можете использовать команду find для поиска пустых файлов

find . -maxdepth 1 -type f -empty | tee /dev/tty | wc -l

Где

-maxdepth 1 смотреть только в текущем каталоге, а не подкаталоги -type f выглядит только для файлов, а не каталогов -empty проверяет наличие пустых файлов tee /dev/tty отправить имя файла на терминал и wc wc -l подсчитать файлы

Подробнее см. man find.

0
ответ дан 18 July 2018 в 15:31

Если вам не нужно рекурсивно (т.е. спускаться в / подсчитать пустые файлы внутри подкаталогов), вы можете просто использовать стандартные проверки файлов, например

n=0 for f in *; do [[ -f "$f" ]] && [[ ! -s "$f" ]] && { echo "$f"; ((n++)); } done echo "Number of empty files: $n"

Из help test:

[F2]
0
ответ дан 18 July 2018 в 15:31

Размер пустого файла обычно равен нулю. Поэтому запуск следующего скрипта поможет найти пустые файлы

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 Эта команда меняет каталог 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 кб

0
ответ дан 24 July 2018 в 20:39

Вы можете использовать команду find для поиска пустых файлов

find . -maxdepth 1 -type f -empty | tee /dev/tty | wc -l

Где

-maxdepth 1 смотреть только в текущем каталоге, а не подкаталоги -type f выглядит только для файлов, а не каталогов -empty проверяет наличие пустых файлов tee /dev/tty отправить имя файла на терминал и wc wc -l подсчитать файлы

Подробнее см. man find.

0
ответ дан 24 July 2018 в 20:39
  • 1
    /path/to/dest неудобно в ответе на вопрос о скрипте для поиска пустых файлов в текущем каталоге. – karel 5 April 2017 в 05:34

Если вам не нужно рекурсивно (т.е. спускаться в / подсчитать пустые файлы внутри подкаталогов), вы можете просто использовать стандартные проверки файлов, например

n=0 for f in *; do [[ -f "$f" ]] && [[ ! -s "$f" ]] && { echo "$f"; ((n++)); } done echo "Number of empty files: $n"

Из help test:

[F2]
0
ответ дан 24 July 2018 в 20:39
  • 1
    спасибо, теперь, если бы я хотел сделать эту же программу, но дать возможность указать каталог как аргумент, и если аргумент не указан, используйте текущий каталог? – Taylor Stevens 5 April 2017 в 02:43
  • 2
    @TaylorStevens - это действительно вопрос проверки количества позиционных параметров $# и действия соответственно. – steeldriver 5 April 2017 в 04:57

Размер пустого файла обычно равен нулю. Поэтому запуск следующего скрипта поможет найти пустые файлы

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 Эта команда меняет каталог 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 кб

0
ответ дан 31 July 2018 в 23:40

Вы можете использовать команду find для поиска пустых файлов

find . -maxdepth 1 -type f -empty | tee /dev/tty | wc -l

Где

-maxdepth 1 смотреть только в текущем каталоге, а не подкаталоги -type f выглядит только для файлов, а не каталогов -empty проверяет наличие пустых файлов tee /dev/tty отправить имя файла на терминал и wc wc -l подсчитать файлы

Подробнее см. man find.

0
ответ дан 31 July 2018 в 23:40
  • 1
    /path/to/dest неудобно в ответе на вопрос о скрипте для поиска пустых файлов в текущем каталоге. – karel 5 April 2017 в 05:34

Если вам не нужно рекурсивно (т.е. спускаться в / подсчитать пустые файлы внутри подкаталогов), вы можете просто использовать стандартные проверки файлов, например

n=0 for f in *; do [[ -f "$f" ]] && [[ ! -s "$f" ]] && { echo "$f"; ((n++)); } done echo "Number of empty files: $n"

Из help test:

[F2]
0
ответ дан 31 July 2018 в 23:40
  • 1
    спасибо, теперь, если бы я хотел сделать эту же программу, но дать возможность указать каталог как аргумент, и если аргумент не указан, используйте текущий каталог? – Taylor Stevens 5 April 2017 в 02:43
  • 2
    @TaylorStevens - это действительно вопрос проверки количества позиционных параметров $# и действия соответственно. – steeldriver 5 April 2017 в 04:57

Вы можете использовать команду find для поиска пустых файлов

find . -maxdepth 1 -type f -empty | tee /dev/tty | wc -l

Где

  • -maxdepth 1 смотреть только в текущем каталоге, а не в подкаталогах
  • -type f смотрит только на файлы, а не на каталоги
  • -empty проверяет наличие пустых файлов
  • tee /dev/tty отправляет имя файла на терминал и wc
  • wc -l подсчитать файлы

Для получения дополнительной информации см. man find.

0
ответ дан 9 August 2018 в 03:08

Другие вопросы по тегам:

Похожие вопросы: