На моем сервере виртуального хостинга также есть ~файл /.cpan/CPAN/MyConfig.pm. Удаление всей папки ~/.cpan
помогло мне. Для удаления /usr/share/perl5/CPAN/Config.pm
требуются привилегии root, поэтому мне это не поможет.
Этот код работает для сброса и повторного -запуска установки cpan без вывода (, извлеченного из моего скрипта sslcert cron ).
if [ -d ~/.cpan ]; then rm -fR ~/.cpan ; echo y | cpan > /dev/null 2>&1; fi
Та же строка также работала на моем настольном ПК с Ubuntu.
Чтобы найти файлы, рекурсивно соответствующие шаблону,find PATH -name PATTERN
-см. man find
. Для поиска по содержимому этих файлов вы должны объединить find
с grep
в find … -exec grep PATTERN +
. Наконец, GNU grep
имеет флаг --count
/-c
для подсчета количества совпадений.
$ cd "$(mktemp --directory)"
$ printf '%s\n' foo bar foo > first
$ printf '%s\n' bar foo bar > second
$ printf '%s\n' bar > third
$ find. -name '*r*' -exec grep --count foo {} +
./third:0
./first:2
Если вы можете быть удовлетворены ограничением регулярных выражений в стиле egrep
и подсчетом только количества строк, соответствующих регулярному выражению (, а не общего количества совпадений регулярного выражения ), то вам подойдет что-то вроде этого:
$ find /directory/name -type f -print | xargs egrep -c "line[0-9]" /dev/null
(/dev/null
в конце является своего рода хаком, в случае, если xargs
разбивает вывод find
таким образом, что последняя выполняемая ею команда egrep
вызывается ровно с одним именем файла -, в котором В этом случае он напечатает счетчик, но не имя файла, к которому относится этот счетчик ).
Если вы хотите жить опасно и вместо этого пытаетесь использовать регулярные выражения в стиле Perl -, вы можете использовать grep -P
вместо egrep
, но это может работать или не работать, в зависимости от используемой системы. это на.
Вы можете использовать рекурсивную версию grep
. Если вам просто нужны имена файлов, вы можете сделать:
grep -rl regex *
Вы можете отправить вывод вышеуказанного через wc -l
, чтобы получить количество совпадающих файлов.
Если вам просто нужно количество экземпляров в каждом файле, вы можете попробовать
grep -rc regex * | grep -v ":0$"