2013-11-25 57 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'的輸出。正如我在我的問題中所說,我有一個命令將執行,我不能改變它,但我需要運行另一個命令的第一個結果忽略它們。這是可能的 –