В глобусе оболочки (, также известном как шаблоны имен файлов ), .
не имеет специального значения, *
означает ноль или более символов, а ?
означает любой одиночный символ.
Вы хотите исключить точку, за которой следует как минимум один символ, а затем любое количество символов. Так что используйте:
grep -r --exclude-dir='.?*' string.
В относительно недавних версиях procps вы можете использовать etimes
в качестве прошедшего времени в секундах:
ps -Ao etimes= -o pid= |
awk -v n=30 '$1 >= n*86400 {print $2}' |
xargs -r kill
(здесь предполагается GNU xargs
для его -r
опции)
Или:
ps -Ao etimes= -o pid= |
awk -v n=30 '$1 >= n*86400 {print "kill", $2}' |
sh
В более старых версиях вы можете вернуться кetime
:
LC_ALL=C ps -Ao etime= -o pid= |
awk -v n=30 '$1 ~ /^[[:digit:]]+-/ && 0+$1 >= n {print "kill", $2}' |
sh
(этот синтаксис соответствует POSIX и должен работать во всех системах, совместимых с POSIX ).