xargs

Linux查找–find命令

人走茶凉 提交于 2020-03-13 07:20:55
find命令的格式 find pathname -options [ -print -exec -ok ...] pathname #是find命令所查找的目录路径,例如.表示当前目录,/表示根目录 -print #表示find命令将匹配的文件输出到标准输出中 -exec #表示find命令对匹配的文件执行该参数给出的shell命令。相应命令的形式为 ‘cmd’ {} \; -ok #它的作用和-exec一样,只是需要用户交互,更安全 find命令的选项 -name #按照文件名查找文件 -perm #按照权限查找文件 -prune #使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略 -user #按照文件属主来查找文件 -group #按照文件数组来查找文件 -mtime -n +n #按照文件的更改时间来查找文件 -n 表示从此刻算起,文件的更改是在n天以内 +n 表示文件的更改时间是在n天以前 find命令还有-atime和-ctime选项,和-mtime选项的时间规定类 似 -nogroup #查找无有效属组的文件,即该文件所属的组在/etc/groups中不存在 -nouser #查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在 -newer file1 ! file2

git提取出两个版本之间的差异文件并打包 linux命令行

耗尽温柔 提交于 2020-03-10 23:16:09
公司的项目原先是使用svn做版本管理,发布项目的时候是采用打包的方式压缩成zip格式的文件,然后用ftp上传。随着开发人员越来越多,需求变 化也比较多,经常在开发新功能时要调整线上的问题,在一个分支上进行开发就非常不方便。虽然svn也支持多分支开发,但是操作非常不便,于是就把项目的版 本管理切换成了git。 切换成git之后,为了平缓的过度,发布项目的时候还是打算使用打包的方式,然后ftp上传。那么问题就来了:git如何提取出两个提交之间的差异文件呢? 一开始找了git format-patch和git archive都没有找到需要的功能,后来就去查git diff命令,找到了方法。 git diff这个命令能比较两个提交之间的差异,使用–name-only参数可以只显示文件名。例如: $ git diff 608e120 4abe32e --name-only git diff列出两个提交之间差异的文件 这个输出结果非常有意思,就是差异文件的相对地址,不正好是压缩命令的参数吗?于是立马使用压缩命令 $ zip update.zip c/environ.c ... 所有的文件... 就能成功打包了。只是这样的话也太麻烦了吧,幸好linux有提供一个命令xargs能将前一个命令的输出转成另外一个命令的参数,按照这个思路就非常简单了。 $ git diff 608e120

xargs中的参数位置

此生再无相见时 提交于 2020-03-08 05:41:16
find . -size +50M -print0 | xargs -0 -I {} cp {} largefolder/ 使用-I参数,后面跟的符号表明用该符号替代find传递过来的值。 man xargs -I replace-str Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1. 参考: find pwd grep cp xargs组合 xargs cp 的问题 来源: https://www.cnblogs.com/lbsx/archive/2010/10/10/1847306.html

太赞了!两个技巧帮你记住复杂 Linux 命令!

大憨熊 提交于 2020-03-04 15:39:08
Linux 经历这么多个年头了,其中命令越来越多,又加上参数的多种多样,就算是实打实的高手也没有十足的把握能把各种命令运用得炉火纯青,就别说那些初学者了。 面对这些复杂难记的命令,网上的一些工具如 Keep,Bashpast CLI,Pet 等可以帮助我们记录这些复杂的命令。不过这几个学起来有点难度,而且还需要下载特定的工具,比较麻烦。 这里推荐两个小技巧,可以很方便地给一些复杂命令加上标签,使用的时候可以根据标签快速找到对应命令,简单高效! 给 Linux 命令做标记 我们可以给一些复杂的命令打上标签,这些标签可以提醒你相关 Linux 命令的作用。在对 Linux 命令应用标记之后呢,我们就可以不用输入又长又复杂的命令啦,只需要输入我们设置好的标记字符就 OK 了! 下面拿一个命令进行示范吧,比如在当前目录中查找和列出大于 10MB 的文件,并按大小对它们进行排序: $ find . -size +10M -type f -print0 | xargs -0 ls -Ssh | sort -z 不知道你们还记不记得这个命令是干嘛的呢?不记得的同学自行一部分一部分拆开分析哈。 因为它太长了,作用也没办法一眼看出来,所以我们可以在它的末尾添加一个便于记忆的标记,最好是能体现命令的作用滴,比如这里设置 ListFilesBiggerThanXSize : $ find . -size

每日一题20180330-Linux

谁说我不能喝 提交于 2020-03-04 13:29:50
一、问题 1.1 统计/var/log/下所有文件个数 1.2 查找出/var/log目录下面修改时间是7天以前,大小在50k到2M之间,并以.log结尾的文件把这些文件复制到/data目录中 1.3 设置一条Iptables规则,允许192.168.10.0段访问873端口? 二、答案 2.1 find /var/log/ ! -type d | wc -l ll -R /var/log | egrep "^[sl-][rwx-]{9}"| wc -l tree /var/log/ | awk 'END{print $3}' 分析: 1、/var/log/下所有文件包括当前目录和子目录以及子目录的子目录下面的文件 2、linux下文件有很多类型,包括 普通文件、链接文件、字符设备文件、块设备文件、socket文件等 ls -l输出第一个字符含义 - 普通文件 d 目录 l 链接文件 c 字符设备文件 b 块设备文件 s socket文件 2.2 find /var/log -mtime +7 -size +50k -size -2M -name "*.log" | xargs -i cp {} /data 说明: 默认xargs不支持,{}这种形式,xargs加上-i就可以支持,-i参数就可以用{}花括号了。 查找出满足要求的文件使用find命令

太赞了!两个技巧帮你记住复杂 Linux 命令!

风格不统一 提交于 2020-03-04 12:56:47
Linux 经历这么多个年头了,其中命令越来越多,又加上参数的多种多样,就算是实打实的高手也没有十足的把握能把各种命令运用得炉火纯青,就别说那些初学者了。 面对这些复杂难记的命令,网上的一些工具如 Keep,Bashpast CLI,Pet 等可以帮助我们记录这些复杂的命令。不过这几个学起来有点难度,而且还需要下载特定的工具,比较麻烦。 这里推荐两个小技巧,可以很方便地给一些复杂命令加上标签,使用的时候可以根据标签快速找到对应命令,简单高效! 给 Linux 命令做标记 我们可以给一些复杂的命令打上标签,这些标签可以提醒你相关 Linux 命令的作用。在对 Linux 命令应用标记之后呢,我们就可以不用输入又长又复杂的命令啦,只需要输入我们设置好的标记字符就 OK 了! 下面拿一个命令进行示范吧,比如在当前目录中查找和列出大于 10MB 的文件,并按大小对它们进行排序: $ find . -size +10M -type f -print0 | xargs -0 ls -Ssh | sort -z 不知道你们还记不记得这个命令是干嘛的呢?不记得的同学自行一部分一部分拆开分析哈。 因为它太长了,作用也没办法一眼看出来,所以我们可以在它的末尾添加一个便于记忆的标记,最好是能体现命令的作用滴,比如这里设置 ListFilesBiggerThanXSize : $ find . -size

linux xargs参数

偶尔善良 提交于 2020-03-04 07:24:56
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。 想查所有日志中包含”error“的日志并打印, 显然:find -name "*.log"| grep "error" 只能搜出日志名字包含‘error’的日志文件。 使用如下命令: find -name "*.log" | xargs grep "error" 可以搜出日志中包含error的日志内容 来源: https://www.cnblogs.com/huhuuu/p/5173363.html

Linux Shell的18条常用命令整理

自作多情 提交于 2020-03-03 10:04:22
1、 ls: 类似于dos下的dir命令 ls最常用的参数有三个:-a -l -F。 ls –a Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。 ls –l 该参数显示更详细的文件信息。 ls –F 使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。 2、cd: 用于切换用户当前工作目录 cd aaa 进入aaa目录 cd 命令后不指定目录,会切换到当前用户的home 目录 cd ~ 作用同cd后不指定目录,切换到当前用户的home 目录 cd - 命令后跟一个减号,则会退回到切换前的目录 cd .. 返回到当前目录下的上一级目录 3、pwd: 用于显示用户当前工作目录 4、mkdir 和 rmdir midir:创建目录 rmdir:删除目录 两个命令都支持-p参数,对于mkdir命令若指定路径的父目录不存在则一并创建,对于rmdir命令则删除指定路径的所有层次目录,如果文件夹里有内容,则不能用rmdir命令 如下: mkdir -p 1/2/3 rmdir -p 1/2/3 5、cp:

calling shell function using parallel with list of quoted filenames as input

孤街浪徒 提交于 2020-03-03 07:46:06
问题 Using Bash. I have an exported shell function which I want to apply to many files. Normally I would use xargs, but the syntax like this (see here) is too ugly for use. ...... | xargs -n 1 -P 10 -I {} bash -c 'echo_var "$@"' _ {} In that discussion, parallel had an easier syntax: ..... | parallel -P 10 echo_var {} Now I have run into the following problem: the list of files to which I want to apply my function is a list of files on one line, each quoted and separated by spaces thus: "file 1"