在linux 下 用shell查找image下所有文件名开头包含abc 如(abc_100-900.txt)的所有文件。

目录结构如/home/sandan/images/you/ku/abc_100-900.txt 然后返回所有文件的路径及文件名 如 返回 you ku 100 900 这样写入一个文本换行,请高手指教,谢谢
有高手必将重重给分,可以转给你们朋友看看。在线等候!

其实很简单:
1. cd /home/sandan/images
2. find . -type f -name abc* -print > /tmp/file1
此时/tmp/file1含有/home/sandan/images下所有的文件(不含directories). 每行开头为./
3. cut -c3- /tmp/file1 > /tmp/file2
此时/tmp/file2含有/home/sandan/images下所有的文件, 每行是一个文件或其相对路径
4. vi /tmp/file2
然后敲:%s/\// /g (千万别敲错了)
接着敲:wq
现在/tmp/file2就是你需要的结果。

第四步可以用sed做,不过我不太用它。追问

你的过于复杂!

追答

看来你的确对Linux或Unix不太熟。 我的回答看上去步骤多,其实是有意的,是为了使各种情况都考虑到,过程很清楚。 如果愿意,一行就全做完了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-17
[root@redhat home]# find /home/sandan/images/you/ku -name abc* | awk -F/ '{print $5,$6,$7}' | sed 's/[a-z][a-z][a-z]_//g' | sed 's/-/ /g' | sed 's/\.[a-z][a-z][a-z]/ /g' >> files
[root@redhat home]# cat files
you ku 100 900
[root@redhat home]#

记得给分追问

是不是少了一个find

追答

我就用了一个find

追问

如果要排除查找文件夹下所有文件名.bbs的目录不查找怎么写

追答

那就在find | 后边 加一个 grep -v bbs 过滤一下

追问

恩,把你的改进了一下完成任务,谢谢!

追答

多给点分。谢谢。

本回答被提问者采纳
第2个回答  2011-10-17
find /home/sandan/images/* -name abc* -print
这样仅仅能查找到文件名
grep -r -l --color -i '*you*ku*100*900*' /home/sandan/images/*
-r向子文件夹继续查找
-i不分大小写
--color用彩色加亮符合内容
-l同时指出含有*you*ku*100*900*'内容的文件名及绝对路径
这个是我常用的查找文件内容的命令格式追问

你理解错了,you ku 100 900 是变量,有很多这样路径的文件

相似回答