Я пытаюсь подсчитать размер всех файлов и подкаталогов, начиная с ./
использованием Oneliner:Bash - Отфильтровать каталоги из вывода ls -la, но оставить каталог "."
ls -laR | grep -v "\.\." | awk '{total += $5} END {print total}'
, но это считается размер подкаталогов в два раза, потому что выход ls -laR | grep -v "\.\."
является:
.:
total 32
drwxr-xr-x 3 root root 4096 Nov 29 22:59 .
-rw-r--r-- 1 root root 55 Nov 29 02:19 131
-rw-r--r-- 1 root root 50 Nov 29 01:28 abc
-rw-r--r-- 1 root root 1000 Nov 29 01:27 access.log
drwxr-xr-x 2 root root 4096 Nov 29 22:24 asd
-rwx------ 1 root root 458 Nov 29 02:54 oneliners.sh
-rwx------ 1 root root 2136 Nov 29 17:56 regexp.sh.skript
./asd:
total 32
drwxr-xr-x 2 root root 4096 Nov 29 22:24 .
-rw-r--r-- 1 root root 21298 Nov 29 22:26 asd
так считает каталог дважды. один раз в листинг каталога .:
как:
drwxr-xr-x 2 root root 4096 Nov 29 22:24 asd
и 2-й раз в листинг каталога ./asd:
как:
drwxr-xr-x 2 root root 4096 Nov 29 22:24 .
я ожидаю, что это произойдет в каждом подкаталоге. Есть ли способ удалить их один раз с ls
вывода? Usint grep -v '^d'
удаляет все каталоги, поэтому их вообще не учитывают. Я знаю, что могу сделать это просто bu, используя du -sb
, но мне нужно, чтобы это было сделано с помощью fancy oneliner.
huh? что случилось с 'du'? –
НЕ анализируйте вывод ls. ™ – 4ae1e1
_but Мне нужно, чтобы это было сделано с помощью fancy oneliner_. Разве это не 'du -sh' oneliner? – alvits