2012-05-03 235 views
3

我一直在尋找一種方式來表達這個命令排除除了那些文件「.EXE」find命令和逆正則表達式

結束我已經嘗試使用‘查找’來解決它所有可執行燙髮命令和-exec,請。謝謝。

我tryed的命令,和相同的其他版本,不工作:

find . -type f -regex "[^\.EXE$]" -printf "%f\n" -exec chmod a-x {} + 

感謝任何幫助,貝喬。


編輯:

要找到一個正則表達式的 「逆」,我後(多)的研究嘗試:

find . -type f ! -regex ".EXE$" -printf "%f\n" -exec chmod a-x {} + 

但是,這也沒有工作。

+1

如果你想使用-regex謂語,而不是-name謂詞,你需要指定一個正則表達式,整個名稱相匹配的完整版本:-regex」 * \ .EXE $「 –

+0

感謝那個正則表達式。 –

回答

4

有幾件事情可以用您的命令修復

首先是排除條件。要排除「* .EXE」說! -name "*.EXE"。 OP中的條件取所有含有不同於\,.,EX的字母的文件。

另一件事是,爲了這個特定的目的,只檢查可執行文件是有意義的。這可以通過-executable謂詞來完成。

其餘的似乎沒問題。

這裏是

find -executable -type f ! -name "*.EXE" -exec chmod a-x {} + 
+0

偉大的提示!謝謝! –

-1

如果find . -name "*.EXE" -exec chmod a-x {} +不起作用,那麼我只需將「find。-name .. -print」寫入腳本並編輯腳本。