当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 如何写这个命令?
帖子发表于 : 2010-10-29 22:46 

注册: 2010-10-21 19:54
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
例如我查找一个名字为x的文件,然后用file命令判断文件x的文件类型
我用这样的管道命令好像不行,
find / -name x | file
如何写这段管道命令??


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-29 22:50 

注册: 2010-10-21 19:54
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
我知道这样的命令可以这样写
find / -name x | xargs file

还有没有其他的方法??


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-29 23:02 

注册: 2008-12-12 15:35
帖子: 133
送出感谢: 0 次
接收感谢: 0 次
find / -name x -exec file {} \;


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-29 23:14 

注册: 2010-10-21 19:54
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
这个命令参数也知道,能不能有一种方法,通过变量传递参数


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-30 2:37 
头像

注册: 2008-07-05 2:15
帖子: 207
送出感谢: 1
接收感谢: 0 次
zhusongd 写道:
这个命令参数也知道,能不能有一种方法,通过变量传递参数


你的意思是这个?

#!/bin/sh

find -name xxx > tmpfile

for i in `cat tmpfile`
do
file $i
done
rm tmpfile


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-30 3:21 

注册: 2010-08-31 1:42
帖子: 5
送出感谢: 0 次
接收感谢: 0 次
zhusongd 写道:
这个命令参数也知道,能不能有一种方法,通过变量传递参数


可以这样。
先定义一个变量 a, 再用a传递参数。
a=`find -name x`; file $a


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-30 8:49 

注册: 2008-12-12 15:35
帖子: 133
送出感谢: 0 次
接收感谢: 0 次
上面两楼都不能处理有空格的文件吧 :em06
高人指点迷津


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-30 10:26 
头像

注册: 2008-07-05 2:15
帖子: 207
送出感谢: 1
接收感谢: 0 次
daniel.supremacy 写道:
上面两楼都不能处理有空格的文件吧 :em06
高人指点迷津


你试试这个!
代码:
#!/bin/sh
find -name "xxx yyy"> tmpfile
IFS="\n"
for i in `cat tmpfile`
do
file $i
done
rm tmpfile


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-30 10:50 

注册: 2008-12-12 15:35
帖子: 133
送出感谢: 0 次
接收感谢: 0 次
bzhao 写道:
你试试这个!
代码:
#!/bin/sh
find -name "xxx yyy"> tmpfile
IFS="\n"
for i in `cat tmpfile`
do
file $i
done
rm tmpfile

麻烦先test再发上来,我把处理结果放这里:
代码:
$ ls -lh test*
-rw-r--r-- 1 daniel daniel   0 2010-10-30 10:46 test file
-rw-r--r-- 1 daniel daniel   0 2010-10-30 10:46 test saf
-rwxr-xr-x 1 daniel daniel 102 2010-10-30 10:46 test.sh

代码:
$ cat test.sh
#!/bin/sh

find -name "test*" > tmpfile
IFS="\n"
for i in `cat tmpfile`
do
   file $i
done
rm tmpfile

代码:
$ ./test.sh
./test saf
./test file
./test.sh: ERROR: cannot open `./test saf
./test file
./test.sh' (No such file or directory)

============编辑的封个先==============
这个可以运行
代码:
$ cat test.sh
#!/bin/sh

find -name "test*" > tmpfile

IFS="
"

for i in `cat tmpfile`
do
   file $i
done
rm tmpfile

代码:
$ ./test.sh
./test saf: empty
./test file: empty
./test.sh: POSIX shell script text executable


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-30 12:19 
头像

注册: 2008-07-05 2:15
帖子: 207
送出感谢: 1
接收感谢: 0 次
daniel.supremacy 写道:
bzhao 写道:
你试试这个!
代码:
#!/bin/sh
find -name "xxx yyy"> tmpfile
IFS="\n"
for i in `cat tmpfile`
do
file $i
done
rm tmpfile

麻烦先test再发上来,我把处理结果放这里:
代码:
$ ls -lh test*
-rw-r--r-- 1 daniel daniel   0 2010-10-30 10:46 test file
-rw-r--r-- 1 daniel daniel   0 2010-10-30 10:46 test saf
-rwxr-xr-x 1 daniel daniel 102 2010-10-30 10:46 test.sh

代码:
$ cat test.sh
#!/bin/sh

find -name "test*" > tmpfile
IFS="\n"
for i in `cat tmpfile`
do
   file $i
done
rm tmpfile

代码:
$ ./test.sh
./test saf
./test file
./test.sh: ERROR: cannot open `./test saf
./test file
./test.sh' (No such file or directory)

============编辑的封个先==============
这个可以运行
代码:
$ cat test.sh
#!/bin/sh

find -name "test*" > tmpfile

IFS="
"

for i in `cat tmpfile`
do
   file $i
done
rm tmpfile

代码:

$ ./test.sh
./test saf: empty
./test file: empty
./test.sh: POSIX shell script text executable



我的IFS="\n"是work的, 这个可能是sh的版本引起的:
我的系统是 Ubuntu10.04
#ls /bin/sh
lrwxrwxrwx 1 root root 4 2010-10-30 12:12 /bin/sh -> bash
$sh --version
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

你用的是什么系统? 什么shell?


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-10-30 13:37 

注册: 2008-10-31 22:12
帖子: 6546
系统: 践兔
送出感谢: 18
接收感谢: 25
代码:
find | while read line ; do file "$line" ; done


_________________
代码:
] ls -ld //


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 如何写这个命令?
帖子发表于 : 2010-11-03 14:21 
头像

注册: 2009-11-24 14:12
帖子: 292
送出感谢: 0 次
接收感谢: 0 次
file $(find / -name x)
/目录可能还要sudo


_________________
男儿心比铁,纵死亦千钧!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译