От man yum.conf
на Fedora 17:
Набор повторений количество раз любая попытка получить файл должен повторить прежде, чем возвратить ошибку. Установка этого к '0' делает вкусную попытку навсегда. Значение по умолчанию равняется '10'.
Так, в/etc/yum.conf, под [основным] разделом, это помогает определить повторения?
Кроме того, существует вкусный-updatesd пакет, который может быть установлен. Если это доступно, можно было бы отредактировать/etc/yum/yum-updatesd.conf для включения автоматических обновлений:
#do_update = no
do_update = yes
И затем конфетка-updatesd перезапуска.
Как заметили другие, вам не нужна опция [114487]-1[114488] на [114489]ls[114490], так как она автоматическая, когда [114491]ls[114492] пишет в трубу. (Если только у Вас нет [114493]ls[114494] под псевдонимом, чтобы всегда использовать режим столбцов. Я видел это раньше, но не очень часто.)
Псевдоним [114495]lc[114496] довольно удобен в общем, и для этого вопроса, если вы посмотрите на случай "считать текущий каталог", [114497]ls|lc[114498] примерно так лаконичен, как вы можете получить.[114129].
Пока единственный подход Аарона более лаконичен, чем твой собственный. Более корректная версия вашего подхода может выглядеть так:
ls -aR1q | grep -Ecv '^\./|/$|^$'
Она рекурсивно перечисляет все файлы - не каталоги - по одному на строку, включая .dotfiles под текущим каталогом, используя глобусы оболочки, необходимые для замены непечатаемых символов. grep отфильтровывает любые списки родительских каталогов или ... или */ или пустые строки - так что в каждом файле должна быть только одна строка - общее количество которых grep возвращает вам. Если вы хотите, чтобы дочерние каталоги были включены, сделайте следующее:
ls -aR1q | grep -Ecv '^\.{1,2}/|^$'
-Удалите -R
в любом случае, если вы не хотите рекурсивных результатов.
f=(target_dir/*);echo ${#f[*]}
корректно работает для файла с пробелами, новыми строками и т.д. в имени.
Предполагая bash 4+ (который есть в любой поддерживаемой версии Ubuntu):
num_files() (
shopt -s nullglob
cd -P -- "${1-.}" || return
set -- *
echo "$#"
)
Назовите его num_files [dir]
. dir
является необязательным, в противном случае он использует текущую директорию. Ваша оригинальная версия не учитывает скрытые файлы, так же как и это. Если вы хотите, чтобы shopt -s dotglob
до установил -- *
.
Ваш оригинальный пример подсчитывает не только обычные файлы, но и каталоги и другие устройства -- если вам действительно нужны только обычные файлы (включая сим-ссылки на обычные файлы), вам нужно будет их проверить:
num_files() (
local count=0
shopt -s nullglob
cd -P -- "${1-.}" || return
for file in *; do
[[ -f $file ]] && let count++
done
echo "$count"
)
Если вы нашли GNU, что-то подобное также является опцией (обратите внимание, что сюда входят скрытые файлы, чего не сделала ваша первоначальная команда):
num_files() {
find "${1-.}" -maxdepth 1 -type f -printf x | wc -c
}
(измените -тип
на -тип
, если вы также хотите подсчитывать сим-ссылки на обычные файлы).
ls
является много столбцов, только если он выводит непосредственно на терминал, Вы можете удалить опцию "-1", Вы можете удалить опцию wc
"-l", только прочитать первое значение (ленивое решение, не используется для легальных доказательств, уголовных расследований, критических задач, тактических операций...).
ls target | wc