Bash

在 heredocument 重定向/附加行中使用正則表達式,以定位特定的“集”目錄

  • June 14, 2018

我需要一種方法來定位所有以或其他TLDpublic_html結尾的子目錄,或者我可能會在heredocument中列出。.com``.biz``.co.il

這是我的 hereoducmnet 內的pushd-popd-if-fi嵌套在for循環內的語句:

for dir in "$HOME"/public_html/*/; do
   if pushd "$dir"; then
       cat <<-"EOF" >> "$HOME"/public_html/ALL_DOT_COM|ALL_DOT_BIZ/.htaccess

          Apache_directive_set_1

          Apache_directive_set_2

          popd
       EOF
   fi
done 2>myErrors.txt

有沒有辦法結合正則表達式來實現這一點,直接在 heredocument 重定向/附加行(在哪裡ALL_DOT_COM|ALL_DOT_BIZ)?

我假設您想追加到.htaccess所有目錄中$HOME/public_html/foo.com/,例如$HOME/public_html/bar.biz/等。

您的for循環已經管理處理所有目錄,那麼問題就是調整 glob 以匹配所需的結尾:

for dir in "$HOME"/public_html/*.{com,biz,co.il}/; do
   cat <<-"EOF" >> "$dir"/.htaccess
       Apache directives...
       ...
   EOF
done 2>myErrors.txt

似乎不需要cd,因為dir已經包含目錄的完整路徑。

以上內容當然只匹配列出的頂級域。(我不確定這是否是您想要的,因為您寫了“或其他 TLD”。)如果您不在乎目錄名稱上有哪個 TLD,只需使用.../public_html/*/, 或.../public_html/*.*/,儘管這仍然假設沒有其他內容在那裡。(但是,列出所有TLD 有點尷尬,他們可能會想出更多……)

引用自:https://unix.stackexchange.com/questions/449369