特定のディレクトリの下のすべてのファイルとサブディレクトリに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 0755
chmod
多くの場合、すべてのファイルが実行可能でないように、ファイルとディレクトリの権限を個別に変更しようとします。
find /main_directory -type d ! -perm 0755 -exec chmod 755 {} +
find /main_directory ! -type d ! -perm 0644 -exec chmod 644 {} +