Список файлов рекурсивно с папкой и размером файла - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу поделиться сводкой каталога с именами и размерами файлов в виде простого текста.

В этой теме показан список файлов с удобочитаемыми размерами файлов, например, в macOS:

$ du -h -d 10
 14G    ./190803 Aaah
 13G    ./190804 (no sound)

В этом посте приведена структура файла с красивым деревом:

$ find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
.
|____.DS_Store
|____190803 Aaah
| |____190803 Aaah.mp4
| |____DSC_0011.MOV
| |____DSC_0012.MOV
| |____DSC_0013.MOV
| |____DSC_0014.MOV
| |____DSC_0015.MOV
| |____DSC_0016.MOV
|____190804 (no sound)
| |_____DSC0018.MOV
| |_____DSC0019.MOV
| |_____DSC0020.MOV
| |_____DSC0021.MOV
| |_____DSC0022.MOV
| |_____DSC0023.MOV
| |____DSC_0017.MOV

Как можно объединить оба и показать читаемый человеком размер файла рядом с каждый элемент, файл или папка в последнем дереве отображаются?

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Попробуйте это:

find . -print0 | 
  xargs -0 -I% du -h "%" | 
  awk ' { 
      size = $1 
      $1 = "" 
      print $0, "(" size ")" }
  ' | 
  sed -e 's;[^/]*/;|____;g;s;____|; |;g'

Если вы хотите, чтобы размеры файлов находились в начале строки, вы можете попробовать это вместо:

find . -print0 | xargs -0 -I% du -h "%" | awk ' { size = $1 ; $1 = ""; print $0, size }' | sed -e 's;[^/]*/;|____;g;s;____|; |;g' | awk ' {size=$NF ; $NF=""; printf("(%5s) %s\n", size, $0) }'

print0 и -0 имеет дело с путями к файлам дел с кавычками, как в Получая ошибку «xargs unterminated quote» при попытке напечатать количество строк в терминале .

0 голосов
/ 18 февраля 2020

Вы можете попробовать это:

for f in $(ls -R); do wc -c $f;done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...