首页 > 其他分享 >xargs命令备忘

xargs命令备忘

时间:2023-05-23 17:31:47浏览次数:35  
标签:md xargs fwd 备忘 命令 ls -- js



文章目录

  • 1 xargs简介
  • 2 基本应用
  • 3 进阶:参数替换
  • 4 进阶:使用-0分割
  • 5 实用妙招
  • 5.1 下载文件内的所有url内容
  • 5.2 将入参分割成指定组数
  • 5.3 使用指定分割功能将一个字符串分割多个参数
  • 6 备忘


1 xargs简介

xargs可以将标准输入作为输入内容转换成后续命令行的参数;

通常用于标准输入或者处理管道将其转换成特定命令行的执行参数

其常用功能总结如下:

  • 为不支持管道的命令行转换并输入参数,例如cp,mv,touch,ls;
  • 各种形式分割参数,避免参数过长;

2 基本应用

  1. 创建测试文件;
user@user:~/test$ touch a.md b.md c.md 1.js 2.js
user@user:~/test$ ls
1.js  2.js  a.md  bin  b.md  c.md
  1. 筛选文件
fwd@fwd:~/test$ ls *.md | xargs ls -al
-rw-r--r-- 1 fwd fwd 0 8月   3 22:44 a.md
-rw-r--r-- 1 fwd fwd 0 8月   3 22:44 b.md
-rw-r--r-- 1 fwd fwd 0 8月   3 22:44 c.md

3 进阶:参数替换

-I选项支持我们将管道传入参数替换成指定字符串,并再后续执行中使用字符串展开为实际值进行处理。仍然以2创立文件为例进行说明;

使用命令:

ls *.md | xargs -I '{}' mv {} {}.backup
  ls *.md | xargs -I '%' mv % %.backup

执行结果:

fwd@fwd:~/test$ ls *.md | xargs -I '{}' mv {} {}.backup
fwd@fwd:~/test$ ls -l
总用量 4
-rw-r--r-- 1 fwd fwd    0 8月   3 22:44 1.js
-rw-r--r-- 1 fwd fwd    0 8月   3 22:44 2.js
-rw-r--r-- 1 fwd fwd    0 8月   3 22:44 a.md.backup
drwxr-xr-x 2 fwd fwd 4096 8月   3 22:03 bin
-rw-r--r-- 1 fwd fwd    0 8月   3 22:44 b.md.backup
-rw-r--r-- 1 fwd fwd    0 8月   3 22:44 c.md.backup

4 进阶:使用-0分割

默认情况下我们从管道或者标准输入分割参数,使用空格或者回车分割,xargs提供了多种其他分割机制。

  • -0 代表使用NULL字符进行分割;
  • –delimiter=delim, -d delim 使用一个指定字符进行参数分割;
  • -E eof-str 用eof结束符分割参数

有时候文件存在特殊字符,比如空格或者回车字符,使用

touch 'hello 01.js' 'hello 02   .js'

fwd@fwd:~/test$ touch 'hello 01.js' 'hello 02   .js'
fwd@fwd:~/test$ ls -l
总用量 4
drwxr-xr-x 2 fwd fwd 4096 8月   3 22:03  bin
-rw-r--r-- 1 fwd fwd    0 8月   3 23:11 'hello 01.js'
-rw-r--r-- 1 fwd fwd    0 8月   3 23:11 'hello 02   .js'

此时使用之前形式会形成错误分割,造成无法正确识别文件:

fwd@fwd:~/test$ find . -name "*.js"|xargs ls -l
ls: 无法访问'./hello': 没有那个文件或目录
ls: 无法访问'01.js': 没有那个文件或目录
ls: 无法访问'./hello': 没有那个文件或目录
ls: 无法访问'02': 没有那个文件或目录
ls: 无法访问'.js': 没有那个文件或目录
-rw-r--r-- 1 fwd fwd 0 8月   3 22:03 ./bin/a.js
-rw-r--r-- 1 fwd fwd 0 8月   3 22:03 ./bin/b.js

此时应该修正命令行如下所示

fwd@fwd:~/test$ find . -name "*.js" prin0 |xargs -0 ls -l
find: paths must precede expression: `prin0'
总用量 4
drwxr-xr-x 2 fwd fwd 4096 8月   3 22:03  bin
-rw-r--r-- 1 fwd fwd    0 8月   3 23:11 'hello 01.js'
-rw-r--r-- 1 fwd fwd    0 8月   3 23:11 'hello 02   .js'

如上所示,执行结果没有了之前所示报错。主要原因是我们再find参数使用时候使用了print0选项,将查找结果加入NULL字符后进行输出显示;然后xargs配合使用-0选项识别参数结束符,将有效文件名进行分割识别,避免错误将文件名空格截取导致无法识别文件名的问题!

find . -name "*.js"|xargs ls -l

5 实用妙招

5.1 下载文件内的所有url内容

5.2 将入参分割成指定组数

5.3 使用指定分割功能将一个字符串分割多个参数

#### 1-下载文件的制定下载链接
cat url-list.txt | xargs wget -c
#### 2-将打印一列数字的偶数个筛选出来排序
echo " 1 21 1 12 212 18" | xargs -n2 | awk '{print $2}'|sort -r
####3-
echo "user#ding#127.0.0.1#8080" | xargs -d "#"

6 备忘

使用-t参数记录xargs执行结果

fwd@fwd:~/test$ ls *.md | xargs -t -I '%' mv % %.1
mv a.md.backup.md a.md.backup.md.1 
mv b.md.backup.md b.md.backup.md.1 
mv c.md.backup.md c.md.backup.md.1

find 与xargs何用时候,为了避免文件名中含有特殊字符,特别是空格,会使用print0作为输出,相应的xargs使用-0选项配合可以有效避免名字识别错误问题!


标签:md,xargs,fwd,备忘,命令,ls,--,js
From: https://blog.51cto.com/u_13674158/6333778

相关文章

  • Linux查找文件内容的常用命令方法
    1.从文件内容查找匹配指定字符串的行###grep字符串filenameeg:grep2019on.log2. 从文件内容查找与正则表达式匹配的行  grep-e正则表达式 filename3.查找时不区分大小写 grep-i字符串 filename4.查找匹配的行数  grep-c字符串filenam......
  • ping返回时间的命令
    打powershell输入如  ping.exe-t192.168.192.1|Foreach{"{0}-{1}"-f(Get-Date),$_}    把ip地址替换为你想ping的地址返回如下图所示  ......
  • windows通过命令行设置进程优先级
    针对进程的就通过这6个优先级来控制图形界面可以通过任务管理器操作,也可以通过其他软件 cmd命令行示例:wmicprocesswherename="processname"CALLsetpriority"value"wmicprocesswherename="firefox.exe"CALLsetpriority"realtime"wmic......
  • DOS简介及常用命令汇总
    1.什么是DOSDOS是英文DiskOperatingSystem的缩写,即为磁盘操作系统,两者是完全一样的概念。 DOS还能有效地管理各种软硬件资源,对它们进行合理的调度,所有的软件和硬件都在DOS的监控和管理之下,有条不紊地进行着自己的工作。 在windows操作系统中,最常见的DOS是MS-DOS,它是个人......
  • 代码修改的git命令提交过程
    首先,克隆远程仓库到本地:gitclone<remote_repository_url>进入本地仓库目录:cd<local_repository_directory>创建并切换到一个新分支:gitcheckout-b<new_branch_name>修改代码并保存更改。添加修改后的文件到暂存区:gitadd<file_name>提交更改到本......
  • zip压缩保留软链接命令
    压缩保留软链接命令-j:将要压缩的内容前面的路径不保留,即下面示例libxxx.so*前面的路径解压缩后不存在,没有该参数则存在-r:递归压缩-y:保留软链接关系zip-jrylibxxx.zip/home/plat/linux_5_10_latest/libxxx.so*上面命令不使用-j参数测试如下:zip-rylibxxx.zip/home/......
  • 总结命令
    下载dockeryum-yupdate:升级所有包同时也升级软件和系统内核;yum-yupgrade:只升级所有包,不升级软件和系统内核安装需要的软件包yum-util提供yum-config-manager功能,另两个是devicemapper驱动依赖yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2设置yum源......
  • 【linux进阶】shell 命令之 awk | sed命令详解,带实例
    WK和Sed是常用的文本处理工具,可以用来处理文本文件、日志文件等数据。下面将分别介绍AWK和Sed命令,并提供一些实例。AWK命令AWK是一种文本处理工具,其名字取自它的三位创始人的姓名:AlfredAho,PeterWeinberger和BrianKernighan。AWK命令通常用于从文件或其他输入流中......
  • fastcopy 参数 命令 大全
    FastCopy.exe[/cmd=命令][/file_src="源文件路径"][/file_dst="目标文件路径"][/srcdir="源目录"][/dstdir="目标目录"][选项...]/cmd-指定命令。(force_copy,move,sync,delete,verify,search,load_job,save_job)/file_src-指定源文件路径。(在force......
  • 记一次IDEA运行maven命令异常退出,Process finished with exit code -1073741819 (0xC
    系统是基于ARM64的win11,问题根源也不是网传的金山毒霸,出问题的也不是我。起因,我一学弟想在他的微软surfacepro上装IDEA学java,然后给他整了个i586版本的jdk(也就是32位jdk).后面他学习的时候用到tomcat,然后一运行项目啊,发现tomcat是64位,32位的jdk运行不起来,然后把jdk换成了64......