问个有点难度的,谢谢指点

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

问个有点难度的,谢谢指点

#1

帖子 13378333 » 2012-07-25 15:25

让find命令在PATH里面循一遍

比如PATH=/usr/bin:/usr/sbin:/usr/local
find /usr/bin .....
find /usr/sbin....
find /usr/local......
然后把三条命令的结果输出到屏幕。。
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 问个有点难度的,谢谢指点

#2

帖子 cuihao » 2012-07-25 15:32

代码: 全选

find $(python -c "print(\"$PATH\".replace(':',' '))")
:em04 我承认有点迂……
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

Re: 问个有点难度的,谢谢指点

#3

帖子 13378333 » 2012-07-25 15:33

cuihao 写了:

代码: 全选

find $(python -c "print(\"$PATH\".replace(':',' '))")
:em04 我承认有点迂……
谢谢指点
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 问个有点难度的,谢谢指点

#4

帖子 cuihao » 2012-07-25 15:34

你还是等等楼下高人的纯shell方法吧…… 我不怎么会shell。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: 问个有点难度的,谢谢指点

#5

帖子 link_01 » 2012-07-25 15:50

[bash]for p in `echo $PATH | sed 's/:/ /g'`; do
echo "------$p------"
find $p ...
done[/bash]
是这样吧
笔记
-------------------------------------
http://blog.163.com/wqt_1101
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 问个有点难度的,谢谢指点

#6

帖子 lilydjwg » 2012-07-25 16:23

zsh 的:

代码: 全选

print -l $commands
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

Re: 问个有点难度的,谢谢指点

#7

帖子 13378333 » 2012-08-01 18:02

link_01 写了:[bash]for p in `echo $PATH | sed 's/:/ /g'`; do
echo "------$p------"
find $p ...
done[/bash]
是这样吧
你这个是可以,但是有个缺陷啊
第一行每次都会多查一遍。。。
你去试一下把。。。
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 问个有点难度的,谢谢指点

#8

帖子 cao627 » 2012-08-01 19:09

find $p -type f
只查找文件,不查找目录,就不会“第一行每次都会多查一遍”了
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: 问个有点难度的,谢谢指点

#9

帖子 link_01 » 2012-08-02 9:26

13378333 写了:
link_01 写了:[bash]for p in `echo $PATH | sed 's/:/ /g'`; do
echo "------$p------"
find $p ...
done[/bash]
是这样吧
你这个是可以,但是有个缺陷啊
第一行每次都会多查一遍。。。
你去试一下把。。。

代码: 全选

$ for p in `echo $PATH|sed 's/:/ /g'`; do echo "---$p---" find $p -name "rename*"; done
---/home/linux/bin---
---/sbin---
---/usr/sbin---
---/usr/local/bin---
---/usr/bin---
/usr/bin/rename.ul
/usr/bin/rename
---/bin---
---/usr/bin/X11---
---/usr/games---
---/home/linux/go/bin---
你说的是哪个第一行,echo这行吗?什么叫多查一遍?
笔记
-------------------------------------
http://blog.163.com/wqt_1101
riptide2012
帖子: 222
注册时间: 2011-12-14 10:21

Re: 问个有点难度的,谢谢指点

#10

帖子 riptide2012 » 2012-08-02 10:00

可能是楼主自己的path有重复,所以查重复查了
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 问个有点难度的,谢谢指点

#11

帖子 cao627 » 2012-08-04 10:23

楼主的意思大概是

代码: 全选

find /somewehere/
显示的是
/somewhere/
然后才是
/somewhere/file
......
他的意思就是既然是在 /somewhere/ 中查找
那么显示的结果的第一行就没必要显示/somewhere/ 了。
回复