replacementInCatalogsWithExclusion - aleksei-khitev/knowledge_base GitHub Wiki

Рекурсивная автозамена и исключением каталогов

grep -rl --exclude-dir="*.git" "import org.apache.logging.log4j.Logger;" . | xargs sed -i s^"import org.apache.logging.log4j.Logger;"^"import org.apache.logging.log4j.Logger;\nimport
 org.apache.logging.log4j.LogManager;"^g

Из man grep

GREP(1)                                                                                                 General Commands Manual                                                                                                 GREP(1)

NAME
      grep, egrep, fgrep, rgrep - print lines matching a pattern

SYNOPSIS
      grep [OPTIONS] PATTERN [FILE...]
      grep [OPTIONS] [-e PATTERN]...  [-f FILE]...  [FILE...]

DESCRIPTION
      grep searches the named input FILEs for lines containing a match to the given PATTERN.  If no files are specified, or if the file “-” is given, grep searches standard input.  By default, grep prints the matching lines.

      In addition, the variant programs egrep, fgrep and rgrep are the same as grep -E, grep -F, and grep -r, respectively.  These variants are deprecated, but are provided for backward compatibility.

-r, --recursive
      Read all files under each directory, recursively, following symbolic links only if they are on the command line.  Note that if no file operand is given, grep searches the working directory.  This is equivalent to  the -d recurse option.
-l, --files-with-matches
      Suppress normal output; instead print the name of each input file from which output would normally have been printed.  The scanning will stop on the first match.
--exclude-dir=DIR
  Exclude directories matching the pattern DIR from recursive searches.

Из man xarg

XARGS(1)                                                                                                General Commands Manual                                                                                                XARGS(1)

NAME
       xargs - build and execute command lines from standard input

SYNOPSIS
       xargs  [-0prtx]  [-E  eof-str]  [-e[eof-str]]  [--eof[=eof-str]]  [--null] [-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-str]] [--replace[=replace-str]] [-l[max-lines]] [-L max-lines] [--max-lines[=max-
       lines]] [-n max-args] [--max-args=max-args] [-s max-chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs] [--process-slot-var=name] [--interactive] [--verbose] [--exit]  [--no-run-if-empty]  [--arg-file=file]
       [--show-limits] [--version] [--help] [command [initial-arguments]]

DESCRIPTION
       This  manual page documents the GNU version of xargs.  xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command
       (default is /bin/echo) one or more times with any initial-arguments followed by items read from standard input.  Blank lines on the standard input are ignored.

       The command line for command is built up until it reaches a system-defined limit (unless the -n and -L options are used).  The specified command will be invoked as many times as necessary to use up the list of  input  items.
       In  general,  there will be many fewer invocations of command than there were items in the input.  This will normally have significant performance benefits.  Some commands can usefully be executed in parallel too; see the -P
       option.

       Because Unix filenames can contain blanks and newlines, this default behaviour is often problematic; filenames containing blanks and/or newlines are incorrectly processed by xargs.  In these situations it is  better  to  use
       the  -0  option,  which prevents such problems.   When using this option you will need to ensure that the program which produces the input for xargs also uses a null character as a separator.  If that program is GNU find for
       example, the -print0 option does this for you.

       If any invocation of the command exits with a status of 255, xargs will stop immediately without reading any further input.  An error message is issued on stderr when this happens.

Из man sed

SED(1)                                                                                                       User Commands                                                                                                       SED(1)

NAME
       sed - stream editor for filtering and transforming text

SYNOPSIS
       sed [OPTION]... {script-only-if-no-other-script} [input-file]...

DESCRIPTION
       Sed is a stream editor.  A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).  While in some ways similar to an editor which permits scripted edits (such as ed),
       sed works by making only one pass over the input(s), and is consequently more efficient.  But it is sed's ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

       -i[SUFFIX], --in-place[=SUFFIX]

              edit files in place (makes backup if SUFFIX supplied)

       s/regexp/replacement/
              Attempt  to  match  regexp  against  the pattern space.  If successful, replace that portion matched with replacement.  The replacement may contain the special character & to refer to that portion of the pattern space
              which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.

Назад к Linux