サブディレクトリがループ(または検索)の影響を受けないことを確認してください。

サブディレクトリがループ(または検索)の影響を受けないことを確認してください。

.htaccess本質的に同じ作業(サイトの主要コンテンツの検索と変更)を実行するように設計された次のコードを見てください。

for dir in "$HOME"/public_html/*.{com,co.il}/; do 
  if pushd "$dir"; then 
    chmod 644 .htaccess 
    popd 
  fi 
done 2>/dev/null 

そして:

find "$HOME"/public_html/*.{com,co.il} -name ".htaccess" -exec chmod 644 {} \;

これは.htaccess各ディレクトリのサブディレクトリにあるファイルにも影響しますかpublic_html

答え1

実際、最初のループはリストされたディレクトリ構造内のファイルのみを考慮します(もちろんワイルドカードが埋め込まれています)。リストされたコマンドは、find任意のレベルのディレクトリ構造に限定されず、任意のディレクトリchmod構造で実行できます。そしてディレクトリツリーに.htaccessというファイルがあります。

コマンドを起動ディレクトリ構造に限定するにはfind(globで複数の起動ディレクトリを指定したことに注意してください)、述語を追加してください-maxdepth 1

find "$HOME"/public_html/*.{com,co.il} -maxdepth 1 -name ".htaccess" -exec chmod 644 {} \;

答え2

最初のコードスニペット:

for dir in "$HOME"/public_html/*.{com,co.il}/; do 
  if pushd "$dir"; then 
    chmod 644 .htaccess 
    popd 
  fi 
done 2>/dev/null 

これは、次のようにディレクトリに入ったり出たりすることなくオーバーライドできます。

for dir in "$HOME"/public_html/*.{com,co.il}/; do 
    chmod 644 "$dir/.htaccess" 
done 2>/dev/null 

これは、次のように短縮または最小限に変更することもできます。

for pathname in "$HOME"/public_html/*.{com,co.il}/.htaccess; do 
    chmod 644 "$pathname" 
done 2>/dev/null 

これらのファイルが多すぎない場合は、次の操作を実行できます。

chmod 644 "$HOME"/public_html/*.{com,co.il}/.htaccess 2>/dev/null

これは、ディレクトリ構造を詳しく見るのではなく、.htaccessサブディレクトリにあるファイルだけを調べます。public_html

最後の2つの亜種はchmodファイルの損失を試みません。元のループと最初の変形仮説特定のディレクトリにファイルがあり、.htaccess最後の2つのバリエーションは実際に存在するファイルを繰り返します。前のループは、ディレクトリにそのようなファイルが含まれているかどうかをテストする機会を提供しますが(ユーザーは実行しません)、後のコマンドはそのファイルが私たちが興味を持っている唯一のファイルであると仮定します。chmod.htaccess.htaccess

2番目のコードスニペット:

find "$HOME"/public_html/*.{com,co.il} -name ".htaccess" -exec chmod 644 {} \;

一方.htaccess、で定義されたディレクトリまたはディレクトリの下のファイルを探します"$HOME"/public_html/*.{com,co.il}-maxdepth 1beforeを追加すると、この問題を解決できます-name。これにより、findそのディレクトリのサブディレクトリへの再帰が停止され、強制的に最上位レベルで停止します。

-maxdepth 1上記の最後の実際のループとほぼ同じ方法でfind動作するように追加されました。

.htaccessどちらのコマンドも、見つかったファイルが実際にはディレクトリなどではなく通常のファイルであることを確認しようとしません。ループではテストを介してこれを実行でき-ffindコマンドでは-type fそれを実行できます-exec

関連情報