linux 下有办法将前一个命令的结果作为第二个命令的第一个参数吗?具体举例如下
ls | mv {第一个命令的结果} some_dir/
不小心重复创建了,不好意思
eg:
mv `ls` ..
http://lmgtfy.com/?q=%E5%B0%86%E5%89%8D%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E7%BB%93%E6%9E%9C%E4%BD%9C%E4%B8%BA%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8F%82%E6%95%B0
此题终结
xargs?
xargs
新技能 get
能够搜到结果,再发, OK ?
这个可以实现我的需求,非常感谢,有一点前提是前一个命令中不含有``
也可以有,转义一下
xargs - build and execute command lines from standard input
|
mv $(ls ...)
`` 和 $() 同样效果
| 操作符是把上一个程序的输出作为下一个程序的输入,和楼主理解的参数不是一回事。
e=`ls`
mv ${e} /dst-dir/
这是作为参数
目前根据回答可以总结如下 4 种方法:
1. ls | xargs -i mv {} some_dir/ (使用 xargs 的-i 参数)
2. mv `ls` some_dir/
3. mv $(ls) some_dir/
4. e=`ls` => mv ${e} some_dir/
有别的方法也欢迎补充
mkdir ~/test
cd ~/test
touch a
touch b
mkdir ~/test1
ls | xargs -n1 -I {} cp -a {} ~/test1
cd ~/test1
ls
搭楼求解一下
一般我们排序 hosts 文件
sort hosts.txt
是从左到右字符逐渐排序,那么
比如这个 cat hosts.txt
127.0.0.1 p.kjwx8.com
127.0.0.1 sta.jcjk0451.com
127.0.0.1 1.yhzm.cc
127.0.0.1 www.hao934.com
127.0.0.1 www.1680go.com
127.0.0.1 pc.quansj.cn
127.0.0.1 ad.xxguan.cn
127.0.0.1 pic.517m.cn
127.0.0.1 eee.ttyy888.co
127.0.0.1 www.716703.com
127.0.0.1 dp.559.cc
127.0.0.1 info.yitsoftware.com
127.0.0.1 ads.gionee.com
127.0.0.1 pdl.gionee.com
如何实现从最右边字符开始逐步往左字符排序?这个我看了很多教程,有个-k 参数,但没搞成功。求解!
简单的很
sort -k 2,1
就行了
percol 是个好东西
https://github.com/mooz/percol
ls | xargs mv -t dst_dir/
xargs 可以不用 -i
不行, sort -k 2,1 hosts 这个结果还是从左到右字符排序的。
无法从倒过来排序。
如何实现这个效果:
127.0.0.1 dp.559.cc
127.0.0.1 1.yhzm.cc
127.0.0.1 sta.jcjk0451.com
127.0.0.1 www.716703.com
127.0.0.1 www.hao934.com
127.0.0.1 p.kjwx8.com
127.0.0.1 pdl.gionee.com
127.0.0.1 ads.gionee.com
127.0.0.1 info.yitsoftware.com
127.0.0.1 www.1680go.com
127.0.0.1 pc.quansj.cn
127.0.0.1 ad.xxguan.cn
127.0.0.1 pic.517m.cn
127.0.0.1 eee.ttyy888.co
tac host | sort | tac
你的意思是整个字符串倒过来排序?? -k 是列的参数当然不行
可以这么写: cat hosts | rev | sort | rev
find ./ -exec mv {} dist_dir \;
成功了。非常感谢你!!
这几天我到处找 Linux 社区请教,却一直没能解决。还是 V2EX 牛人多啊!
毕竟这里都是老司机
我一般都是这么用的
ls | xargs -i -P 30 rm -rf {} > /dev/null