2016-11-23 42 views
0

我有一個grep命令的問題。 我有3項任務:我怎樣才能grep來過濾ls的結果?

一)查找並顯示 「ls -l命令」

ls -l | grep ^d # which works good 

b)只文件,這名以數字開頭只目錄的

ls | grep ^[0-9] 

的作品太多,但對於文件和目錄,它只能用於文件,我該怎麼做?

C)文件具有 「X」 適合團體

ls -l | grep "^-*x" # it shows every file 

我怎樣才能使這些命令的b)和c)的作品?

+5

解析'ls'對此是個壞主意。使用'find'命令。 – anubhava

+4

...請參閱Wooledge wiki上的[爲什麼不應該解析'ls']的輸出(http://mywiki.wooledge.org/ParsingLs),以及[UsingFind](http://mywiki.wooledge。組織/ UsingFind)。 –

回答

1

一)查找並顯示 「ls -l命令」

find . -maxdepth 1 -mindepth 1 -type d -exec ls -l {} \; 

b)只文件,其名稱與數字

find . -maxdepth 1 -type f -name "[0-9]*" 

三)具有 「X」 文件只啓動目錄的適用於羣組

find . -maxdepth 1 -type f -perm /g+x 
+1

嘿。我只是自己回答這個問題,因爲我擔心會有其他答案試圖採用逐字法的方法。顯然我不必擔心。也就是說,正如目前使用'-regex'實現的那樣,(b)是不必要的不​​兼容的(需要對'find'進行GNU擴展),並且如果它位於以數字開頭的目錄中,它將匹配任何文件。 –

+1

@CharlesDuffy更新了答案:) – ritesht93

+0

如果添加'-ls'動作,則會得到與'ls -l'相同的輸出。 –