xargs 和 exec詳解
xargs 和 exec詳解
exec主要和find一起配合使用,xargs比exec用的地方要多。
xargs應用
把管道符前面的輸出作為xargs後面的命令的輸入。好處在於可以簡化步驟。常常和find一起使用,#find . -mtime +10 |xargs rm
(1)xargs可以批量修改檔名,更精準一點的說法是批量增加檔名。
[root@shiyanji tmp]# touch 1.txt 2.txt 3.txt 4.txt
[root@shiyanji tmp]# ls
1.txt 2.txt 3.txt 4.txt
[root@shiyanji tmp]# ls *.txt|xargs -n1 -i{} mv {} {}_bak ##-i{} 中間不能有空格 可以只跟-i
[root@shiyanji tmp]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak
注:
xargs -n1 -i{} 類似for迴圈,-n1的意思是一個一個物件的去處理,-i{} 把前面列出的物件用{}取代,mv {} {}_bak 相當於重新命名。很實用的命令,掌握。-n1可以省略不要!
(2)xargs可用於拷貝
[root@shiyanji tmp]# ls *.txt_bak |xargs -n1 -i{} cp {} /
[root@shiyanji tmp]# cd /
[root@shiyanji /]# ls
1.txt_bak 4.txt_bak dev lib mnt root srv usr
2.txt_bak bin etc lost+found opt sbin sys var
3.txt_bak boot home media proc selinux tmp
注:上面的操作意思是將/tmp目錄下的*.txt_bak檔案拷貝到根目錄下。
(3)xargs可拷貝的時候進行重新命名
[root@shiyanji tmp]# ls *.txt_bak |xargs -n1 -i{} cp {} /{}.bak ##/{}.bak中間沒有空格
[root@shiyanji tmp]# cd /
[root@shiyanji /]# ls
1.txt_bak 3.txt_bak bin home mnt sbin tmp
1.txt_bak.bak 3.txt_bak.bak boot lib opt selinux usr
2.txt_bak 4.txt_bak dev lost+found proc srv var
2.txt_bak.bak 4.txt_bak.bak etc media root sys
注:上面的操作是將/tmp目錄下的*.txt_bak拷貝到根目錄並重新命名為*.txt_bak.bak。
(4)xargs與find的配合使用
運用一:刪除檔案操作
[root@shiyanji ~]# cd /tmp
[root@shiyanji tmp]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak filelist yum.log
[root@shiyanji ~]# find /tmp -name *.txt_bak |xargs -n1 -i{} rm -rf {}
[root@shiyanji ~]# cd /tmp
[root@shiyanji tmp]# ls
filelist yum.log
運用二:重新命名檔案操作
[root@shiyanji /]# cd /tmp
[root@shiyanji tmp]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak filelist yum.log
[root@shiyanji ~]# find /tmp -name *.txt_bak |xargs -n1 -i{} mv {} {}.wtf
[root@shiyanji ~]# cd /tmp
[root@shiyanji tmp]# ls
1.txt_bak.wtf 2.txt_bak.wtf 3.txt_bak.wtf 4.txt_bak.wtf filelist yum.log
exec 應用
find命令時,經常使用一個選項就是 -exec,可以達到和xargs一樣的效果。
運用一:刪除檔案
例1:[root@shiyanji ~]# find /tmp -name *.txt* -exec rm -rf {}\;##{}\中間要有空格!
find: 遺漏“-exec”的引數
[root@shiyanji ~]# find /tmp -name *.txt* -exec rm -rf {} \;
[root@shiyanji ~]# cd /tmp
[root@shiyanji tmp]# ls
filelist yum.log
例2:
#find . -mtime +10 -exec rm -rf {} \;
這個命令也是把{}作為前面find出來的檔案的替代符,後面的\為;的脫意字元,不然脫意字元,shell會把這裡的分號 ; 當做這個命令列
的結尾,認為後面還有其他的任務。-exec也能實現上面的更改檔名的需求。
運用二:重新命名檔案
[root@shiyanji tmp]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak
[root@shiyanji tmp]# cd
[root@shiyanji ~]# find /tmp -name *.txt_bak -exec mv {} {}.wtf \;
[root@shiyanji ~]# cd /tmp
[root@shiyanji tmp]# ls
1.txt_bak.wtf 2.txt_bak.wtf 3.txt_bak.wtf 4.txt_bak.wtf
運用三:拷貝檔案並重新命名
[root@shiyanji ~]# find / -name *.txt_bak -exec cp {} /tmp/{}.www \;
[root@shiyanji ~]# cd /tmp
[root@shiyanji tmp]# ls
1.txt_bak.www 2.txt_bak.www 3.txt_bak.www 4.txt_bak.www
相關文章
- find和xargs使用詳解(轉)
- ind和xargs使用詳解(轉)
- xargs用法詳解
- xargs 命令詳解,xargs 與管道的區別
- xargs命令詳解,xargs與管道的區別
- Linux xargs 命令詳解Linux
- linux下find,xargs命令詳解和例項Linux
- 【轉】exec xargs的區別 另附eval命令介紹
- Linux下xargs命令詳解及xargs與管道的區別Linux
- xargs的原理剖析及用法詳解
- linux下xargs命令用法詳解Linux
- xargs在linux中的使用詳解Linux
- find命令的exec選項用法詳解(轉)
- linux shell 指令碼攻略學習6-xargs詳解Linux指令碼
- Docker exec 命令的詳細使用Docker
- Linux檔案查詢命令find,xargs詳述Linux
- [譯]php和curl_multi_execPHP
- AIX中find命令和xargs命令介紹AI
- Linux/Unix 檔案查詢命令 find, xargs 詳述Linux
- Linux檔案查詢命令find,xargs詳述(轉)Linux
- 在 JavaScript 中,exec() 和 match() 區別JavaScript
- xargs 命令教程
- 如何使用find和xargs查詢和處理檔案
- 多程式函式系列fork(), wait(), exec()系列,system(), posix_spawn()例項詳解函式AI
- Linux xargs 命令Linux
- xargs的用法示例
- 命令列技巧:使用 find 和 xargs 查詢和處理檔案命令列
- DR和BDR詳解
- 詳解 let 和 var
- require 和 import 詳解UIImport
- exp和imp詳解
- 詳解jdbcTemplate和namedParameterJdbcTemplateJDBC
- jni和ndk詳解
- ckeckpoint和SCN詳解
- startActivityForResult和setResult詳解
- 探究js正則匹配方法:match和execJS
- python execPython
- exec()函式函式