Узнать количество файлов по расширениям и другие параметры

Изображение пользователя kot040188.

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

0
lord_i - 7 Ноябрь, 2014 - 22:15
Изображение пользователя lord_i.

Если это делать по очереди для каждого расширения то вполне подойдет "выделить группу" по маске в крузадере или каком-то другом файловом менеджере. Если Вам нужна статистика одновременно для всех расширений - думаю надо скрипт писать.

0
kot040188 - 7 Ноябрь, 2014 - 22:36
Изображение пользователя kot040188.

Если это делать по очереди для каждого расширения
Эдак я в любом файловом менеджере могу сделать. Я хочу комплексно подойти к вопросу =)

0
human - 8 Ноябрь, 2014 - 15:05

Нашел вот это, но, к сожалению, не работает (скрипт bash). Думается, местные гуру подскажут где вкралась ошибка.

5. Как узнать сколько файлов с каким расширением находятся в папке:
find /target/folder -type f | sed -r ‘s/^.*\.([^.]+)$/\1/’ | tr “[:upper:]” “[:lower:]” | awk ‘{ ext[$1]++ } END { for (e in ext) print ext[e], e }’ | sort -nr|head -n 20
find /target/folder -type f – выбираем все файлы из заданной папки
sed -r ‘s/^.*\.([^.]+)$/\1/’ | tr “[:upper:]” “[:lower:]“ – из списка их имен формируем список всех расширений
awk ‘{ ext[$1]++ } END { for (e in ext) print ext[e], e }’ – производим подсчет всех расширений
sort -nr|head -n 20 – выводим первые двадцать позиций из отсортированного списка расширений, в порядке убывания найденных с таким определением файлов

Оригинал здесь
Также хотелось бы увидеть список файлов с наибольшим размером. Тоесть нужно приложение для просмотра статистики файлов
В Крусайдере жмем Alt+Стрелка вниз, выбираем панель статистики, там можно посмотреть крупные файлы и кучу всего прочего.

0
kot040188 - 8 Ноябрь, 2014 - 15:16
Изображение пользователя kot040188.

В Крусайдере жмем Alt+Стрелка вниз, выбираем панель статистики, там можно посмотреть крупные файлы и кучу всего прочего.
То что нужно по части размеров. Вот если бы ещё отдельно от крусайдера… Такую бы штуку по части расширений…

0
human - 8 Ноябрь, 2014 - 21:48

в нужной директории выполняем du -ah | sort -hr

+1
_qwerty - 8 Ноябрь, 2014 - 15:59

ошибка в кавычках вот так работает:
find /target/folder -type f | sed -r 's/^.*\.([^.]+)$/\1/' | tr “[:upper:]” “[:lower:]” | awk '{ ext[$1]++ } END { for (e in ext) print ext[e], e }' | sort -nr|head -n 20

0
human - 8 Ноябрь, 2014 - 16:18

find: `/target/folder': Нет такого файла или каталога
чяднт?

разобрался)
а как запилить, чтобы значение "/target/folder" бралось из указанного (script /home/user/downloads например)?

+1
_qwerty - 8 Ноябрь, 2014 - 16:32

find "$1" -type f | sed -r 's/^.*\.([^.]+)$/\1/' | tr “[:upper:]” “[:lower:]” | awk '{ ext[$1]++ } END { for (e in ext) print ext[e], e }' | sort -nr|head -n 20

"$1" - первый параметр скрипта

0
human - 8 Ноябрь, 2014 - 16:39

спасибо, то что нужно!
з.ы. порядок сортировки почему-то не работает:
10 chm
3 fb2
5 pdf
2 djvu
9 doc
2 url
1 directory
3 txt

0
_qwerty - 8 Ноябрь, 2014 - 16:42

скрипт покажи

0
human - 8 Ноябрь, 2014 - 17:20

точно, какой-то видать не тот был, взял из последнего сообщения - все ок!

0
kot040188 - 8 Ноябрь, 2014 - 17:55
Изображение пользователя kot040188.

Пока я был занят, такое бурное обсуждение было =) Нельзя ли объяснить как для самых маленьких, как этим скриптом пользоваться =)

+1
human - 8 Ноябрь, 2014 - 18:33

1. Создаем файл, например c именем katz =)
2. Вставляем туда содержимое find "${PWD#}" -type f | sed -r 's/^.*\.([^.]+)$/\1/' | tr “[:upper:]” “[:lower:]” | awk '{ ext[$1]++ } END { for (e in ext) print ext[e], e }' | sort -nr|head -n 20
3. Отправляем его в /usr/bin
sudo cp katz /usr/bin
4. Теперь в Dolphin'е переходим в нужную папку, включаем консоль (F4), пишем katz и получаем примерно следующее:
user@komputer:~/Downloads$ katz
8986 png
1475 svg
74 xpm
37 directory
25 html
20 xml
18 tix
18 six
18 rix
18 pack
18 iix
18 cix
17 in
16 c
11 css
10 theme
9 m4
9 h
9 am
8 ttf

+1
_qwerty - 8 Ноябрь, 2014 - 18:37

показывает только 20 первых строк
из-за команды: "head -n 20"
если её убрать покажет всё, ну или замени 20 на свой параметр

0
human - 8 Ноябрь, 2014 - 18:43

Согласен, лучше его совсем убрать. Тогда куча лишнего, файл без расширения каждый отдельно высвечивается.

0
_qwerty - 8 Ноябрь, 2014 - 18:45

а если убрать и запустить в домашней папке получим огромный список
файлов без расширений :(((
ток что попробовал

0
kot040188 - 8 Ноябрь, 2014 - 19:02
Изображение пользователя kot040188.

У меня файлов без расширений нет…

0
_qwerty - 8 Ноябрь, 2014 - 19:13

эт хорошо а то можно в скрипт вставить типа фильтра
на расширение: egrep '^\./.+\..+$'
ну или что-то другое

0
kot040188 - 8 Ноябрь, 2014 - 19:00
Изображение пользователя kot040188.

То-то я думаю что не все расширения показывает…

0
kot040188 - 8 Ноябрь, 2014 - 19:03
Изображение пользователя kot040188.

А прямую черту перед командой тоже убирать?

0
human - 8 Ноябрь, 2014 - 19:04

да

0
kot040188 - 8 Ноябрь, 2014 - 19:18
Изображение пользователя kot040188.

Убрал - появились странные расширения типа "su/a_002". Как это понять?

0
_qwerty - 8 Ноябрь, 2014 - 19:20

это не расширения а просто имена файлов

0
kot040188 - 8 Ноябрь, 2014 - 19:52
Изображение пользователя kot040188.

Разве / может быть в названии файла?
Понял что это. su - конец названия папки после точки. А a_002 - файл. Видимо алгоритм так своеобразно ищет точки в путях к файлам…

0
_qwerty - 8 Ноябрь, 2014 - 19:50

в названии нет в пути к файлу да

0
_qwerty - 8 Ноябрь, 2014 - 20:05

всё таки хотелось бы узнать, что именно мы будем считать расширением файла а что нет?
какое количество чисел,букв или букв и чисел после точки
исключая слеши?
з.ы хочу немножко скрипт изменить.

0
kot040188 - 8 Ноябрь, 2014 - 20:18
Изображение пользователя kot040188.

Сейчас алгоритм ищет точку в пути к файлу. Я думаю это не нужно. Если нет точки в названии, пусть пишет название в список как расширение и всё. А то получается такая фигня su/a_002

0
_qwerty - 8 Ноябрь, 2014 - 20:22

файлов без точки в названии тоже огромное количество.

0
kot040188 - 8 Ноябрь, 2014 - 20:43
Изображение пользователя kot040188.

И что? Это должно напугать? У меня всего пару и те надо удалить, потому как мусор…

0
_qwerty - 8 Ноябрь, 2014 - 20:46

А у меня не пара и не мусор :)

0
kot040188 - 8 Ноябрь, 2014 - 20:51
Изображение пользователя kot040188.

Надо определится: делаем скрипт мне, вам или универсальный =)

0
_qwerty - 8 Ноябрь, 2014 - 21:41

тогда предлагаю так:
find "${PWD#}" -type f | egrep '^.+[^/]\.[a-zA-Z0-9]{1,}$' | sed -r 's/^.*\.([^.]+)$/\1/' | tr “[:upper:]” “[:lower:]” | awk '{ ext[$1]++ } END { for (e in ext) print ext[e], e }'| sort -nr
по желанию можно изменить [a-zA-Z0-9]{1,}
тсть диапазон букв чисел , и длинну расширения
от a до z, и большие A до Z, от 0 до 9, длинна 1 и больше
пример:
[a-z]{1,5} ; маленькие буквы, длинна не больше 5 и т.д
немножко не туда написал :)

0
kot040188 - 8 Ноябрь, 2014 - 21:42
Изображение пользователя kot040188.

Ниже human написал:
Файлы без расширения именуются empty_ext
Я думаю это вас устроит. А все файлы без расширений я уже нашёл в DC.

0
human - 8 Ноябрь, 2014 - 20:34

есть еще такой вариант
find $folder -type f|sed 's_.*/__'|awk -F . '{if (NF == 1) print "empty_ext"; else print $NF }'|sort |uniq -c -i|sort -nr|awk '{printf("%s - %s\n",$2,$1)}'
Мусора вроде поменьше

Файлы без расширения именуются empty_ext
0
_qwerty - 8 Ноябрь, 2014 - 20:48

вот так ещё меньше:
find "${PWD#}" -type f | egrep '^.+[^/]\.[[:alnum:]]{1,}$' | sed -r 's/^.*\.([^.]+)$/\1/' | tr “[:upper:]” “[:lower:]” | awk '{ ext[$1]++ } END { for (e in ext) print ext[e], e }' | sort -nr

0
kot040188 - 8 Ноябрь, 2014 - 20:50
Изображение пользователя kot040188.

Файлы без расширения именуются empty_ext
Так наверное будет лучше, все файлы без расширений можно и в файловом менеджере найти.

+1
kot040188 - 8 Ноябрь, 2014 - 18:51
Изображение пользователя kot040188.

Добавлю что нужно сделать скрипт исполняемым, иначе не будет фурычить =)

+1
human - 8 Ноябрь, 2014 - 18:54

ах, да
2.5
делаем скрип исполняемым
chmod +x katz

+1
DarkneSS - 8 Ноябрь, 2014 - 22:56
Изображение пользователя DarkneSS.

Вторая часть -- ncdu (консольное).

+1
human - 9 Ноябрь, 2014 - 00:51

Подведем итог - создаем скрипт, считающий количество файлов в определённом каталоге по расширениям:

  • Создаем файл, например c именем katz =) kdesudo kate /usr/bin/katz
  • Вставляем туда содержимое find $folder -type f|sed 's_.*/__'|awk -F . '{if (NF == 1) print "empty_ext"; else print $NF }'|sort |uniq -c -i|sort -nr|awk '{printf("%s - %s\n",$2,$1)}'
  • Сохраняем, делаем файл со скриптом исполняемымsudo chmod +x /usr/bin/katz
  • Переходим в Dolphin'е в нужную папку, включаем консоль (F4), пишем katz и получаем сведения. Файлы без расширений именуются empty_ext.
  • Если необходимо просчитать кол-во файлов в только в одной папке (исключая вложенные) добавляем параметр -maxdepth 1, скрипт будет выглядеть так find $folder -maxdepth 1 -type f|sed 's_.*/__'|awk -F . '{if (NF == 1) print "empty_ext"; else print $NF }'|sort |uniq -c -i|sort -nr|awk '{printf("%s - %s\n",$2,$1)}'
  • +1
    Tonal - 9 Ноябрь, 2014 - 20:24
    Изображение пользователя Tonal.

    Ыщё один вариант:
    find $folder -type f | grep -oE '\.[^./]+$' | sort | uniq -ci | sort -nr

    Отправить комментарий