2014-04-03 65 views
0



我試圖讓我的find命令工作,但我不能。
我試圖找到可執行文件只在用戶文件在給定的目錄中排除它的子目錄。
問題是我沒有-maxdepth-path,-regex鍵在我的find命令,所以我試圖用-prune選項。

我發現find /dev \(! -name /dev -prune \) -type f -print解決方案在另一個類似的問題在Stackoverflow,但它也沒有工作。

目前我的命令看起來像這樣
find -- "$path" \(! -name "$path" -prune \) -type f -perm -u=x -print

"$path既可以是 - 絕對或相對路徑Solaris - 在指定目錄中搜​​索文件

+0

想知道什麼系統沒有'-maxdepth'的查找。 – jm666

+0

@ jm666,Solaris 8 for one。 –

+0

@glennjackman thanx,因爲我試着在我的衛星接收器上找到一個'find'(弄皺的busybox),它知道maxdepth :)奇怪的Solaris。 ;) – jm666

回答

0

你能繞過find

ls -la "$path"| awk '^/-[r-][w-]x/ {print $9}'

也就是說,列表文件中長列表,只保留具有所需權限的線條和打印文件名。

+0

解析'ls'通常是不好的,但是如果'solaris'的特定版本沒有'stat',可能就是要走的路。不確定你的'awk'是否會工作,可能會嘗試像'ls -la | grep -P'^ - [r - ] [w-] x''而不是 – BroSlow

+0

標記錯誤的方式...編輯 – mjsqu

+0

該問題只需要文件名,因此打印$ 9。它假定沒有文件名有空格。 – mjsqu