xargs
删除 复制 查看 移动
查看
xargs 会把前面取到的值放到最后面
[root@test3 ~]
/root/111
[root@test3 ~]
此时这条命令就变成了 ls -l /root/111
写完全一点就是
find /root/ -maxdepth 1 -name 111|xargs ls -l '/root/111'
[root@test3 ~]
------x--x 1 root root 66 Jun 22 09:31 /root/111
[root@test3 ~]
此时不支持 ll命令,只支持ls -l
删除
[root@test3 ~]
拷贝
我若是想把文件拷贝到/opt下
就不能这样中规中矩的写了
因为这样写就会变成 find /root/ -maxdepth 1 -name 111|xargs cp /opt/ 111
把 /opt 拷贝到111里了,因为xargs会默认把取到的文件放到最后
[root@test3 ~]
cp: omitting directory ‘/opt/’
-t 取反 代表把1.txt拷贝到/opt下,但一般不用,一般选择支持xargs的语法
cp -t /opt 1.txt
[root@test3 ~]
[root@test3 ~]
[root@test3 ~]
111
xargs语法
[root@test3 ~]
[root@test3 ~]
[root@test3 ~]
111
xargs -i cp {} /opt/
-i 表示插入 insert,把前面找到文件指定插入到 {}里面
{} 就代表前面取的值 拷贝到/opt下
查看过后拷贝过去的文件,你想改名
[root@test3 ~]
[root@test3 ~]
111 1.txt.bak
移动
find /root/ -maxdepth 1 -name 111|xargs -i mv {} /tmp/
第二种方法
使用exec
查看
[root@test3 ~]
-rw-r--r-- 1 root root 0 Jul 12 14:31 /root/111
[root@test3 ~]
-rw-r--r-- 1 root root 1073741824 Jul 11 23:22 /root/3.txt
-rw-r--r-- 1 root root 374 Jul 10 21:28 /root/1.txt
-rw-r--r-- 1 root root 4 Jul 6 11:12 /root/test.txt
-rw-r--r-- 1 root root 0 Jul 6 10:52 /root/2.txt
\; \表示转移,把后面的分号 就只当作普通的 ;
删除
[root@test3 ~]
复制
[root@test3 ~]
[root@test3 ~]
1.txt
移动
[root@test3 ~]
第三种方法
` ` 反引号 $() 先执行反引号和$()里面的命令 相当于 (加)减乘除 ,先算括号里面的
[root@test3 ~]# ll `find /root/ -maxdepth 1 -name '*.txt'`
-rw-r--r-- 1 root root 0 Jul 12 15:08 /root/1.txt
[root@test3 ~]# ll $(find /root/ -maxdepth 1 -name '*.txt')
-rw-r--r-- 1 root root 0 Jul 12 15:08 /root/1.txt