2013-11-25 59 views
0

我有一个特殊的要求,我必须使用一个单独的命令从Linux中的搜索结果中过滤掉所有文件夹及其文件忽略文件夹,并从搜索的文件导致

例子: 我有以下文件夹,它们都具有一个名为测试

/testfolder/f1 
/testfolder/f1_0VT0_hc1 
/testfolder/f1_0VT0_hc2 

因此,举例来说,如果我跑ls testfolder/*文件的初步结果将是:

/testfolder/f1: 
test 

/testfolder/f1_0VT0_hc1: 
test 

/testfolder/f1_0VT0_hc2: 
test 

我需要在另一个命令(例如grep)管道,将采取的结果,并过滤掉所有目录_0VT0_及其文件!

我可以用忽略目录:

ls testfolder/* | grep -R --exclude-from='.*_0VT0_.*'

,但我还是得到了文件!

问题:我该如何修改我的grep命令或我应该使用什么命令忽略文件夹及其中的文件!

澄清我将获得一个lsfind命令,我需要另一命令后,他们执行的是将筛选出这样的文件夹及其文件。所以我可以在批处理文件中进行管道操作。

+0

的'-R'和'--exclude-from'选项'grep'才有意义,当你给它的目录名称作为参数,而不是当它从标准输入读取时。 – Barmar

+0

@Barmar是的,我意识到在运行之后我应该使用其他命令/参数吗? –

+0

你是不是指'grep -v'? – SuperSaiyan

回答

2

使用-prune选项find

find * -name '*_0VT0_*' -prune -o -print 

您可以使用此与普通命令替换另一个命令的一部分:

ls -d $(find * -name '*_0VT0_*' -prune -o -print) 
+0

我可以通过'ls'或另一个'find'命令来管理这个文件吗? –

+0

您可以使用'find'的'-ls'选项来列出文件,而不仅仅是打印文件名。你可以使用'-exec'选项来处理结果文件,或者你可以将输出传送到'xargs'等。 – Barmar

+0

当我提到shell脚本时,我是一个noobie,你的脚本给了我想要的东西。但它会单独运行'find',并且在管道中不使用我的'ls'的输出。正如我在我的问题中所说,我有一个命令将执行,我不能改变它,但我需要运行另一个命令的第一个结果忽略它们。这是可能的 –