Як розрахувати розмір файлу, ігноруючи файли PDF (або інші двійкові файли)?


1

Я хотів би обчислити розмір файлу дерева каталогів, але я хочу ігнорувати всі PDF-файли і зображення. По суті, я намагаюся з'ясувати, який розмір текстових файлів.

Як це можна зробити?

Примітка: це в середовищі Linux, зокрема RedHat

Відповіді:


0

Розглянемо структуру каталогів таким чином:

$ ls -sR1
.:
total 32
4 1/
4 2/
4 m
4 n
4 o
4 x.pdf
4 y.pdf
4 z.pdf

./1:
total 0

./2:
total 8
4 a/
4 p

./2/a:
total 4
4 q

Потім, щоб отримати список всіх файлів, які не збігаються *.pdf, ми можемо зробити

$ find . -type f \( ! -name '*.pdf' \)

чиє розширення також не відповідає, скажімо, *.jpg це досить очевидно. Потім використовуйте du наступним чином:

$ du -c $(find . -type f \( ! -name '*.pdf' \))
4   ./o
4   ./m
4   ./n
4   ./2/a/q
4   ./2/p
20  total

де ви захочете викинути a -b щоб отримати видимий розмір у байтах, а не на диску. -c видає загальну суму.

Обмеженням цього підходу є:

  1. Він не працюватиме, якщо дерево каталогів дуже велике, оскільки
    • Оскільки вона двічі сканує дерево ( find + du )
    • Тому що він живить вихід find в du через командний рядок і, таким чином, обмежена максимально допустимим розміром для цього.
  2. Воно буде (у цьому наївному підході) збігати тільки файли на основі їхніх імен, а не їх змісту.

Ви можете подолати 1. за допомогою find виконати du на кожному окремому файлі, а потім використовувати awk або щось подібне, щоб додати все це. 2. може бути вирішена більш інтригуючими перевірками в Росії find, можливо, виходячи з результату file для кожного файлу і узгодження його з позитивним або негативним списком.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.