2013-12-08 47 views
1

我寫了一個腳本來查找包含可執行文件的所有文件夾。我第一次尋求一個oneliner命令,但可以找到一個。 (我特別嘗試使用sort -k -u)。找到帶有可執行文件的文件夾

。該腳本工作正常,但我最初的問題依然存在:是否有一個oneliner命令來做到這一點?

#! /bin/bash 
find $1 -type d | while read Path 
do 
X=$(ls -l "$Path" | grep '^-rwx' | wc -l) 
if ((X>0)) 
then 
    echo $Path 
fi 
done 
+0

可能重複:http://stackoverflow.com/questions/4458120/unix-find-search-for-executable-files有你的答案。 – 2013-12-08 18:16:08

+0

@HermanTorjussen:這個問題是關於尋找其中包含可執行文件的目錄,與您提出的dup有點不同。 – Mat

回答

3

使用find:

find $1 -type f -perm /111 -exec dirname {} \; | sort -u 

這找到的所有文件許可111(即rwx),但是我們只輸出目錄名。爲避免重複,使用sort -u

正如在評論Paulo Almeida指出,這也將工作:

find $1 -type f -perm /111 -printf "%h\n" | sort -u 
+0

不推薦使用-perm + nnn形式,而是使用/ 111代替。 – denarced

+0

謝謝,我不知道。編輯我的答案。 – pfnuesel

+0

您也可以使用'-printf「%h \ n」'來避免必須調用'dirname'。 –