chmod コマンドをオプションで使用します。

chmod コマンドをオプションで使用します。

特定のディレクトリの下のすべてのファイルとサブディレクトリに755権限を設定したいが、755権限を持たないコンポーネントにのみchmod 755を適用したいと思います。

find /main_directory/ -exec chmod 755 {} \;

コマンドが長いリストを返す場合はfind時間がかかります。 statコマンドを使用して各コンポーネントの8進数のファイルレベルの権限を確認し、if-elseを使用してファイルの権限を切り替えることができることを知っていますが、使用できる1行の方法はありますか?findまず、xargsファイル/ディレクトリにどの権限があるかを確認してから、chmod別の値に設定した場合は755に変更してください。

ベストアンサー1

ファイルとディレクトリの権限を変更したい場合(少なくともパフォーマンスの観点から)を使用することには755実質的な利点はありません。次のことができます。find

chmod -R 755 /main_directory

すでに権限を持つエントリの権限をfind変更したくない場合は、(ctimeタイムスタンプの更新を防ぐために)各ディレクトリとファイルの現在の権限もテストする必要があります。755

find /main_directory ! -perm 0755 -exec chmod 755 {} +

テストに合格したパス名をできるだけ多く-exec ... {} +収集し、すべてのパスで同時に実行します。! -perm 0755chmod

多くの場合、すべてのファイルが実行可能でないように、ファイルとディレクトリの権限を個別に変更しようとします。

find /main_directory   -type d ! -perm 0755 -exec chmod 755 {} +
find /main_directory ! -type d ! -perm 0644 -exec chmod 644 {} +

おすすめ記事