775/664以外の権限を持つディレクトリとファイルの検索

775/664以外の権限を持つディレクトリとファイルの検索

Webサイトをあるサーバーから別のサーバーに移動していますが、Gitはファイル権限などのメタデータを保存しません。それぞれ775/664以外のディレクトリとファイルを見つける必要があります。

今では、次のようによく編まれた設定を使用しています。

$ find . -type d -exec ls -la {} \; | grep ^d | grep -v ^drwxrwxr-x
$ find . -type f -exec ls -la {} \; | grep -v ^d | grep -v ^-rw-rw-r-- | grep -v '.git'

これが動作している間、私はそれがやや陳腐だと思います。これを行うより良い方法はありますか?正式な方法でしょうか、それともハッキングする必要がありますか?

最新のUbuntuバージョンで実行され、BashでGNUツールを使用します。

ベストアンサー1

使用-permテストfindバインディング-not:

find -type d -not -perm 775 -o -type f -not -perm 664
  • -perm 775とまったく同じ権限を一致させます775-perm 664で同じことを行います664
  • -not(boolean NOT) は次のテストを無効にするので、現在と正反対の作業を行います.この場合、正しい権限がないすべてのファイルです。
  • -o(ブールOR)2つのテストセットをまとめてグループ化し、そのうちの1つがテストされたときに一致します。優先順位が最も低いため、テストを2つの異なるグループに分けます。あなたもできますかっこを使うより具体的に。ここでは、権限が異なるディレクトリ775と権限が異なる一般ファイルを一致させます664

2つの別々のディレクトリとファイルコマンドが必要な場合は、半分に切り捨て、-o各半分を別々に使用します。

find -type f -not -perm 664
find -type d -not -perm 775

おすすめ記事