Найти количество файлов в папке и вложенных папках?

У вас, кажется, есть несколько проблем:

Кажется, что gnome-settings-daemon, возможно, не работает, и он устанавливает, какие темы использовать. Кажется, что вам, возможно, не хватает пакетов gnome-icon-theme и / или light-themes.

Трудно сказать, верно ли второе утверждение, но это, безусловно, первый. Если вы щелкнете правой кнопкой мыши по фону и хотите изменить фон, измените ли значки, верхнюю панель и шрифты, хотя бы на мгновение? По какой-то причине вы можете увидеть сбой gnome-settings-daemon, и вы должны сообщить об этом об ошибке. Это невозможно решить просто через askubuntu.

114
задан 8 April 2011 в 16:55

81 ответ

Может быть что-то вроде

find . -type f | wc -l

будет делать трюк. Попробуйте выполнить команду из родительской папки.

168
ответ дан 25 May 2018 в 22:12
  • 1
    Решение не будет работать с файлами, имена которых содержат новую строку. – user unknown 8 April 2011 в 19:23
  • 2
    @user неизвестно: find . -type f -ls | wc -l – arrange 23 November 2013 в 03:24
  • 3
    еще быстрее: find . -type f -print0 | tr -d -c '\0' | wc -c – arrange 23 November 2013 в 03:44
  • 4
    @arrange: еще быстрее: find . -type f -printf . | wc -c - Я принимаю печать для своего решения вместо моего -exec echo. – user unknown 23 November 2013 в 09:41
  • 5
    Имейте в виду, что это также учитывает скрытые файлы, начинающиеся с точки. Я считаю эту особенность, а не ошибкой, но это хорошо знать. – cgogolin 17 January 2016 в 17:13

Может быть что-то вроде

find . -type f | wc -l

будет делать трюк. Попробуйте выполнить команду из родительской папки.

173
ответ дан 25 July 2018 в 22:15

Может быть что-то вроде

find . -type f | wc -l

будет делать трюк. Попробуйте выполнить команду из родительской папки.

173
ответ дан 26 July 2018 в 20:00

Может быть что-то вроде

find . -type f | wc -l

будет делать трюк. Попробуйте выполнить команду из родительской папки.

173
ответ дан 2 August 2018 в 03:43

Может быть что-то вроде

find . -type f | wc -l

будет делать трюк. Попробуйте выполнить команду из родительской папки.

173
ответ дан 4 August 2018 в 19:47

Может быть что-то вроде

find. -тип f | wc -l

выполнит трюк. Попробуйте выполнить команду из родительской папки.

173
ответ дан 6 August 2018 в 03:50

Может быть что-то вроде

find. -тип f | wc -l

выполнит трюк. Попробуйте выполнить команду из родительской папки.

174
ответ дан 7 August 2018 в 21:46

Может быть что-то вроде

find. -тип f | wc -l

выполнит трюк. Попробуйте выполнить команду из родительской папки.

175
ответ дан 10 August 2018 в 10:00

Может быть что-то вроде

find. -тип f | wc -l

выполнит трюк. Попробуйте выполнить команду из родительской папки.

175
ответ дан 13 August 2018 в 16:19
  • 1
    Решение не будет работать с файлами, имена которых содержат новую строку. – user unknown 8 April 2011 в 19:23
  • 2
    @user неизвестно: find. -type f -ls | wc -l – arrange 23 November 2013 в 03:24
  • 3
    еще быстрее: find. -тип f -print0 | tr -d -c '\ 0' | wc -c – arrange 23 November 2013 в 03:44
  • 4
    @arrange: еще быстрее: find. -тип f -printf. | wc -c - Я принимаю печать для своего решения вместо моего -exec-эха. – user unknown 23 November 2013 в 09:41
  • 5
    Имейте в виду, что это также учитывает скрытые файлы, начинающиеся с точки. Я считаю эту особенность, а не ошибкой, но это хорошо знать. – cgogolin 17 January 2016 в 17:13

Используйте команду tree. Возможно, вам потребуется установить пакет tree.

Он отобразит все файлы и папки в данной папке и в конце отобразит сводку.

21
ответ дан 25 May 2018 в 22:12

Самый быстрый и простой способ - использовать tree. Его скорость ограничена вашим выходным терминалом, поэтому, если вы передадите результат на tail -1, вы получите немедленный результат. Вы также можете управлять тем, на каком уровне каталога вам нравятся результаты, используя опцию -L. Для цветного вывода используйте -C. Например:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

Если его еще нет, вы можете получить его здесь.

9
ответ дан 25 May 2018 в 22:12

Чтобы подсчитать файлы (даже файлы без расширения) в корневой папке текущего каталога, используйте:

ls -l | grep ^- | wc -l

. Чтобы подсчитать файлы (даже файлы без расширения) рекурсивно из корня текущего каталог, использование:

ls -lR | grep ^- | wc -l
8
ответ дан 25 May 2018 в 22:12
find -type f -printf . | wc -c

Не считайте выходные строки find, потому что имена файлов, содержащие 99 строк новой строки, будут считаться 100 файлами.

4
ответ дан 25 May 2018 в 22:12
  • 1
    Имена файлов, содержащие новые строки, являются невероятно редким случаем. – DisgruntledGoat 22 July 2013 в 18:49
  • 2
    @DisgruntledGoat: Таким образом, ошибку будет очень сложно найти. – user unknown 23 July 2013 в 07:41

Используйте эту команду для каждой папки в пути

for D in *; do echo $D; find $D -type f| wc -l; done
2
ответ дан 25 May 2018 в 22:12

find выглядит быстрее, чем дерево, поэтому я использовал ниже для подсчета файлов в каждом каталоге текущего рабочего каталога (игнорируя файлы в CWD), позволяя каталогам иметь пробелы:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

1
ответ дан 25 May 2018 в 22:12

Вы можете использовать find . | wc -l

find . будет перечислять все файлы и папки и содержимое, начиная с текущей папки. wc -l подсчитывает результаты поиска

0
ответ дан 25 May 2018 в 22:12
  • 1
    Это решение также учитывает папки, я дал оценку, потому что это соответствовало моему случаю, что я не хотел их подсчитывать :) – topless 8 April 2011 в 17:12

Я бы сам пошел с этим вариантом:

ls -alR | grep -c ^ -
0
ответ дан 25 May 2018 в 22:12
  • 1
    Пожалуйста, добавьте некоторые подробности ... – Pierre.Vriens 29 May 2016 в 10:18

Я бы сам пошел с этим вариантом:

ls -alR | grep -c ^ -
0
ответ дан 25 July 2018 в 22:15
  • 1
    Пожалуйста, добавьте некоторые подробности ... – Pierre.Vriens 29 May 2016 в 10:18

Вы можете использовать find . | wc -l

find . будет перечислять все файлы и папки и содержимое, начиная с текущей папки. wc -l подсчитывает результаты поиска

0
ответ дан 25 July 2018 в 22:15
  • 1
    Это решение также учитывает папки, я дал оценку, потому что это соответствовало моему случаю, что я не хотел их подсчитывать :) – topless 8 April 2011 в 17:12
  • 2
    Решение не будет работать с файлами, имена которых содержат новую строку. – user unknown 8 April 2011 в 19:23

Используйте команду tree. Возможно, вам потребуется установить пакет tree.

Он отобразит все файлы и папки в данной папке и в конце отобразит сводку.

21
ответ дан 25 July 2018 в 22:15

find выглядит быстрее, чем дерево, поэтому я использовал ниже для подсчета файлов в каждом каталоге текущего рабочего каталога (игнорируя файлы в CWD), позволяя каталогам иметь пробелы:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

1
ответ дан 25 July 2018 в 22:15

Чтобы подсчитать файлы (даже файлы без расширения) в корневой папке текущего каталога, используйте:

ls -l | grep ^- | wc -l

. Чтобы подсчитать файлы (даже файлы без расширения) рекурсивно из корня текущего каталог, использование:

ls -lR | grep ^- | wc -l
8
ответ дан 25 July 2018 в 22:15

Используйте эту команду для каждой папки в пути

for D in *; do echo $D; find $D -type f| wc -l; done
2
ответ дан 25 July 2018 в 22:15

Самый быстрый и простой способ - использовать tree. Его скорость ограничена вашим выходным терминалом, поэтому, если вы передадите результат на tail -1, вы получите немедленный результат. Вы также можете управлять тем, на каком уровне каталога вам нравятся результаты, используя опцию -L. Для цветного вывода используйте -C. Например:

$ tree share/some/directory/ | tail -1 558 directories, 853 files $ tree -L 2 share/some/directory/ | tail -1 120 directories, 3 files

Если его еще нет, вы можете получить его здесь.

9
ответ дан 25 July 2018 в 22:15
find -type f -printf . | wc -c

Не считайте выходные строки find, потому что имена файлов, содержащие 99 строк новой строки, будут считаться 100 файлами.

4
ответ дан 25 July 2018 в 22:15
  • 1
    Имена файлов, содержащие новые строки, являются невероятно редким случаем. – DisgruntledGoat 22 July 2013 в 18:49
  • 2
    @DisgruntledGoat: Таким образом, ошибку будет очень сложно найти. – user unknown 23 July 2013 в 07:41

Я бы сам пошел с этим вариантом:

ls -alR | grep -c ^ -
0
ответ дан 26 July 2018 в 20:00
  • 1
    Пожалуйста, добавьте некоторые подробности ... – Pierre.Vriens 29 May 2016 в 10:18

Вы можете использовать find . | wc -l

find . будет перечислять все файлы и папки и содержимое, начиная с текущей папки. wc -l подсчитывает результаты поиска

0
ответ дан 26 July 2018 в 20:00
  • 1
    Это решение также учитывает папки, я дал оценку, потому что это соответствовало моему случаю, что я не хотел их подсчитывать :) – topless 8 April 2011 в 17:12
  • 2
    Решение не будет работать с файлами, имена которых содержат новую строку. – user unknown 8 April 2011 в 19:23

Используйте команду tree. Возможно, вам потребуется установить пакет tree.

Он отобразит все файлы и папки в данной папке и в конце отобразит сводку.

21
ответ дан 26 July 2018 в 20:00

find выглядит быстрее, чем дерево, поэтому я использовал ниже для подсчета файлов в каждом каталоге текущего рабочего каталога (игнорируя файлы в CWD), позволяя каталогам иметь пробелы:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done

1
ответ дан 26 July 2018 в 20:00

Чтобы подсчитать файлы (даже файлы без расширения) в корневой папке текущего каталога, используйте:

ls -l | grep ^- | wc -l

. Чтобы подсчитать файлы (даже файлы без расширения) рекурсивно из корня текущего каталог, использование:

ls -lR | grep ^- | wc -l
9
ответ дан 26 July 2018 в 20:00

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

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