LINUX 二月 28, 2021

linux 通过正则来复制文件

文章字数 5.2k 阅读约需 5 mins. 阅读次数 0

批量复制spring的sources源码包到指定目录

cd /mnt/c/Users/60512/Downloads/spring-5.2.13.RELEASE-dist/spring-framework-5.2.13.RELEASE/
ls ./libs/ | grep sources.jar | xargs -i cp -r ./libs/{} ./libs/source/

ls ./libs/ : 显示目录先的文件名

| grep source.jar : 查找文件里符合条件的字符串.

| xargs -i :传递符合条件的文件目录,拼接进 cp命令中.

cp -r ./libs/{} ./libs/source/ : 拷贝拼接好的命令,并执行拷贝.

ls 命令

列出目前工作目录所含之文件及子目录

语法

ls [-alrtAFR] [name...]

参数

  • -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -A 同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录)
  • -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/“
  • -R 若目录下有文件,则以下之文件亦皆依序列出

grep 命令

查找文件里符合条件的字符串。

语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数

  • -a 或 –text : 不要忽略二进制的数据。
  • -A<显示行数> 或 –after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 –byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 –before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 –count : 计算符合样式的列数。
  • -C<显示行数> 或 –context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 –directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 –regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 –extended-regexp : 将样式为延伸的正则表达式来使用。
  • -f<规则文件> 或 –file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 –fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 –basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 –no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 –with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 –ignore-case : 忽略字符大小写的差别。
  • -l 或 –file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 –files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -o 或 –only-matching : 只显示匹配PATTERN 部分。
  • -q 或 –quiet或–silent : 不显示任何信息。
  • -r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同。
  • -s 或 –no-messages : 不显示错误信息。
  • -v 或 –invert-match : 显示不包含匹配文本的所有行。
  • -V 或 –version : 显示版本信息。
  • -w 或 –word-regexp : 只显示全字符合的列。
  • -x –line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定”-i”参数相同。

xargs 命令

  • 捕获一个命令的输出,然后传递给另外一个命令.
  • 文件的输出中读取数据.默认的命令是 echo,会替换换行与空白成空格.

语法

somecommand |xargs -item  command

参数

  • -a file 从文件中读入作为 stdin
  • -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
  • -p 当每次执行一个argument的时候询问一次用户。
  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
  • -t 表示先打印命令,然后再执行。
  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
  • -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
  • -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
  • -L num 从标准输入一次读取 num 行送给 command 命令。
  • -l 同 -L。
  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
  • -x exit的意思,主要是配合-s使用。。
  • -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

cp 命令

复制文件或目录

语法

cp [options] source dest

参数

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答”y”时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件。
0%