linuxのターミナルを使っているとまれに遭遇するエラー。 rootしか見れないディレクトリで、普通にlsをすると見えるのに、 ls *とワイルドカードをつけると読めなくなる場合があります。 これ、ワイルドカードの展開においてsudoが消えてしまうのが原因なのですが。 とりあえず対処法を。

sh -cでくくる

これが基本。 sudo sh -c 'ls -l /var/log/httpd/*0310'とか。 こうすればちゃんと読めます。

シェルスクリプト書く

for inで回してsudoして実行。 悪くはないかも。 手間はかかるけど。

一時的に権限付与する

まあこっちのほうが楽かも。 見終わったら権限戻すとか。 もちろんlsに限らずrmとかでも同様の現象になりますが、同様にsh -cでくくれば動きます。 とりあえず普通にワイルドカード叩いても動いてくれないので覚えておきましょう。