Подсчет файлов в каталоге

Во время приостановки существует далеко от незначительного использования батареи, поэтому компьютер все равно будет отключен через некоторое время. По какой-то причине это происходит даже без полного выключения батареи; иногда я могу включить его и подтвердить, как 1%, прежде чем начать зарядку.

4
задан 10 February 2018 в 01:19

9 ответов

Чтобы найти количество файлов в каталоге, не содержащем .x.pdf, попробуйте:

find "${Destination}" -mindepth 1 ! -name '*.x.pdf' -printf '1' | wc -c

Чтобы найти количество файлов в каталоге, не содержащем период - один или несколько x - period - pdf, try:

find "${Destination}" -mindepth 1 ! -regex '.*\.x+\.pdf' -printf '1' | wc -c

Вышеуказанный поиск рекурсивно через подкаталоги. Если вы этого не хотите, добавьте опцию -maxdepth 1. Например:

find "${Destination}" -mindepth 1 -maxdepth 1 ! -regex '.*\.x+\.pdf' -printf '1' | wc -c

Обратите внимание, что, поскольку мы используем -printf '1', этот метод безопасен, даже если каталог содержит файлы, имена которых содержат символы новой строки.

7
ответ дан 22 May 2018 в 13:12
  • 1
    Изменил ваш второй пример и протестировал его. Работает! Спасибо. find " $ {Destination} " -момент 1! -regex '. * \. x + \. pdf' -printf '1 \ n' | wc -l – Aaron Nichols 10 February 2018 в 01:17
  • 2
    @DavidFoerster Да, это кажется более простым. Ответ обновлен, чтобы устранить \n. Благодарю. – John1024 21 February 2018 в 22:23

Чтобы найти количество файлов в каталоге, не содержащем .x.pdf, попробуйте:

find "${Destination}" -mindepth 1 ! -name '*.x.pdf' -printf '1' | wc -c

Чтобы найти количество файлов в каталоге, не содержащем период - один или несколько x - period - pdf, try:

find "${Destination}" -mindepth 1 ! -regex '.*\.x+\.pdf' -printf '1' | wc -c

Вышеуказанный поиск рекурсивно через подкаталоги. Если вы этого не хотите, добавьте опцию -maxdepth 1. Например:

find "${Destination}" -mindepth 1 -maxdepth 1 ! -regex '.*\.x+\.pdf' -printf '1' | wc -c

Обратите внимание, что, поскольку мы используем -printf '1', этот метод безопасен, даже если каталог содержит файлы, имена которых содержат символы новой строки.

8
ответ дан 17 July 2018 в 21:11

Чтобы найти количество файлов в каталоге, не содержащем .x.pdf, попробуйте:

find "${Destination}" -mindepth 1 ! -name '*.x.pdf' -printf '1' | wc -c

Чтобы найти количество файлов в каталоге, не содержащем период - один или несколько x - period - pdf, try:

find "${Destination}" -mindepth 1 ! -regex '.*\.x+\.pdf' -printf '1' | wc -c

Вышеуказанный поиск рекурсивно через подкаталоги. Если вы этого не хотите, добавьте опцию -maxdepth 1. Например:

find "${Destination}" -mindepth 1 -maxdepth 1 ! -regex '.*\.x+\.pdf' -printf '1' | wc -c

Обратите внимание, что, поскольку мы используем -printf '1', этот метод безопасен, даже если каталог содержит файлы, имена которых содержат символы новой строки.

8
ответ дан 23 July 2018 в 21:50

Без подкаталогов:

echo $(($(for file in *.sh ; do echo -n 1+; done; echo 0;)))

, потому что:

for file in *.sh ; do echo -n 1+; done; echo 0;
1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+0
2
ответ дан 22 May 2018 в 13:12
  • 1
    Я вижу, как это подсчитывает файлы в каталоге, но как избежать подсчета файлов, которые OP не хочет считать: " Но в этом моя проблема. Я хотел бы подсчитать количество файлов, которые не содержат .x. .xx. и т. д. «? – John1024 10 February 2018 в 04:31
  • 2
    @ John1024: подсчитайте все файлы, сосчитайте все файлы с помощью .x * .pdf, вычтите. – user unknown 10 February 2018 в 04:51
  • 3
    пользователь неизвестен, ОК. Отлично. – John1024 10 February 2018 в 05:46

Вы можете исключить файл или файлы, которые соответствуют шаблону из команды ls, используя (один или несколько раз) параметр -I, --ignore=PATTERN (ссылка):

ls -I "*.x*.pdf" "${Destination}" | wc -l
2] Или вы можете использовать метод вычитания следующим образом:

echo $(($(ls "${Destination}" | wc -l) - $(ls "${Destination}"/*.x*.pdf | wc -l)))
0
ответ дан 22 May 2018 в 13:12

Вы можете исключить файл или файлы, которые соответствуют шаблону из команды ls, используя (один или несколько раз) параметр -I, --ignore=PATTERN (ссылка):

ls -I "*.x*.pdf" "${Destination}" | wc -l

Или вы можете использовать метод вычитания следующим образом:

echo $(($(ls "${Destination}" | wc -l) - $(ls "${Destination}"/*.x*.pdf | wc -l)))
0
ответ дан 17 July 2018 в 21:11

Без подкаталогов:

echo $(($(for file in *.sh ; do echo -n 1+; done; echo 0;)))

, потому что:

for file in *.sh ; do echo -n 1+; done; echo 0; 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+0
2
ответ дан 17 July 2018 в 21:11

Вы можете исключить файл или файлы, которые соответствуют шаблону из команды ls, используя (один или несколько раз) параметр -I, --ignore=PATTERN (ссылка):

ls -I "*.x*.pdf" "${Destination}" | wc -l

Или вы можете использовать метод вычитания следующим образом:

echo $(($(ls "${Destination}" | wc -l) - $(ls "${Destination}"/*.x*.pdf | wc -l)))
0
ответ дан 23 July 2018 в 21:50

Без подкаталогов:

echo $(($(for file in *.sh ; do echo -n 1+; done; echo 0;)))

, потому что:

for file in *.sh ; do echo -n 1+; done; echo 0; 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+0
2
ответ дан 23 July 2018 в 21:50
  • 1
    Я вижу, как это подсчитывает файлы в каталоге, но как избежать подсчета файлов, которые OP не хочет считать: & quot; Но в этом моя проблема. Я хотел бы подсчитать количество файлов, которые не содержат .x. .xx. и т. д. «? – John1024 10 February 2018 в 04:31
  • 2
    @ John1024: подсчитайте все файлы, сосчитайте все файлы с помощью .x * .pdf, вычтите. – user unknown 10 February 2018 в 04:51
  • 3
    пользователь неизвестен, ОК. Отлично. – John1024 10 February 2018 в 05:46

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

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