如何對存在目錄模式進行內聯測試?如果目錄模式存在,則Bash測試並執行
如果目錄模式存在,那麼我想chmod該模式。
例如我試圖做到以下幾點:
[ -d /usr/local/myproject/*/bin ] && chmod +x /usr/local/myproject/*/bin/*
但這給了我錯誤「-bash:[:too many arguments」。
如何對存在目錄模式進行內聯測試?如果目錄模式存在,則Bash測試並執行
如果目錄模式存在,那麼我想chmod該模式。
例如我試圖做到以下幾點:
[ -d /usr/local/myproject/*/bin ] && chmod +x /usr/local/myproject/*/bin/*
但這給了我錯誤「-bash:[:too many arguments」。
沒有必要進行測試:
chmod +x /usr/local/myproject/*/bin/* 2>/dev/null
爲了挽回我的答案中的一些用處,只是假設你有太多的bin目錄,你無法做到這一點yi_H的方式。
find /usr/local/myproject/ -path '/usr/local/myproject/*/bin' -maxdepth 2 -type d -exec chmod a+x {} + 2>/dev/null
它不起作用,因爲-d
測試需要一個參數。你似乎通過不止一個。一個修復程序是:
for dir in /usr/local/myproject/*/bin; do
[[ -d $dir ]] && chmod +x $dir/*
done
你知道,那更好。我最初是想「太多爭論?找到救援!」但是,如果有很多目錄匹配,我的解決方案將無濟於事。 tl;博士@yi_H是對的,你應該給他一個餅乾。 – Sorpigal