grep для строк, содержащих число, которое соответствует математическому выражению [duplicate]

Функции

mysql_ * были обесценены (как и php 5.5), учитывая тот факт, что были разработаны лучшие функции и структуры кода. Тот факт, что функция была обесценена, означает, что больше не будет сделано усилий для ее улучшения с точки зрения производительности и безопасности, что означает, что она менее надежна для будущего.

Если вам нужно больше причин:

  • mysql_ * функции не поддерживают подготовленные операторы.
  • mysql_ * функции не поддерживают привязку параметров.
  • mysql_ * функции не имеют функциональности для объектно-ориентированного программирования.
  • список продолжается ...
21
задан Kent 30 April 2013 в 23:36
поделиться

3 ответа

попробуйте это:

stat -c '%a %n' *|awk '$1>755'

, если вы просто хотите указать имя файла в своем окончательном выходе, пропустите номера привилегий, вы можете:

stat -c '%a %n' *|awk '$1>755{print $2}'

EDIT

на самом деле вы могли бы сделать chmod в awk. но вы должны убедиться, что пользователь выполнил строку awk, имеет разрешение на изменение этих файлов.

stat -c '%a %n' *|awk '$1>755{system("chmod 755 "$2)}'

еще раз, предположим, что имя файла не имеет пробелов.

24
ответ дан fedorqui 3 September 2018 в 13:44
поделиться

Я бы использовал awk(1) :

stat -c '%a %n' * | awk '$1 > 755'

Образец awk соответствует строкам, где первое поле больше 755. Вы могли бы добавить действие, если вы также хотите напечатать подмножество строки или что-то другое (см. ответ @ Kent).

5
ответ дан Carl Norum 3 September 2018 в 13:44
поделиться

Ни в grep, ни в sed хороши в арифметике. awk может помочь (к сожалению, я этого не знаю). Но обратите внимание, что здесь может быть полезно find:

   -perm mode
          File's permission bits are exactly  mode  (octal  or  symbolic).
          Since  an  exact match is required, if you want to use this form
          for symbolic modes, you may have to  specify  a  rather  complex
          mode  string.  For example -perm g=w will only match files which
          have mode 0020 (that is, ones for which group  write  permission
          is  the  only  permission set).  It is more likely that you will
          want to use the `/' or `-' forms, for example -perm -g=w,  which
          matches  any file with group write permission.  See the EXAMPLES
          section for some illustrative examples.

   -perm -mode
          All of the permission bits mode are set for the file.   Symbolic
          modes  are accepted in this form, and this is usually the way in
          which would want to use them.  You must specify `u', `g' or  `o'
          if  you use a symbolic mode.   See the EXAMPLES section for some
          illustrative examples.

   -perm /mode
          Any of the permission bits mode are set for the file.   Symbolic
          modes  are  accepted in this form.  You must specify `u', `g' or
          `o' if you use a symbolic mode.  See the  EXAMPLES  section  for
          some  illustrative  examples.  If no permission bits in mode are
          set, this test matches any file (the idea here is to be  consis‐
          tent with the behaviour of -perm -000).

Итак, что может сработать для вас:

find . -perm -755 -printf '%m %p\n'

Просто удалите часть -printf, если вы нужны только имена файлов.

3
ответ дан Lev Levitsky 3 September 2018 в 13:44
поделиться
Другие вопросы по тегам:

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