再帰chmodから隠されたファイルを除外するには?

再帰chmodから隠されたファイルを除外するには?

chmod -R 755 some_dir「some_dir」に「.git」フォルダを含む操作を実行する必要があります。再帰的なchmodを実行するときに隠されたファイルとフォルダを除外する方法はありますか?

注:.gitフォルダをchmodingすると、次のエラーが発生します。

some_dir/.git/objects/pack/pack-dd149b11c4e5d205e3022836d49a972684de8daa.idx': Operation not permitted

.gitフォルダをchmodする必要はありませんが、残念ながら私の場合はフォルダを削除することはできません。

答え1

一人じゃないchmod。以下を使用する必要がありますfind

find some_dir -name '.?*' -prune -o -exec chmod 755 {} +

またはzsh(またはksh93 -G、または後ろtcshset globstar)ワイルドカードを使用します。

chmod 755 -- some_dir some_dir/**/*

fish(またはを使用してこれを行うこともできますが、4.3より前のバージョンbash -O globstarに注意してディレクトリを降順に移動するときは、シンボリックリンクに従う必要があります。ディレクトリへのシンボリックリンクからファイルをインポートできますが、ディレクトリのサブディレクトリにあるファイル検索できないため、bash 4.3では部分的に修正されました。bashfish

すべてのファイルを実行可能にしますか?

答え2

次のコマンドを試してください。素晴らしい作品。

find path| sed -n '/^\.\/\./!p'|awk '{print "chmod -R" " "  "755" " " $1}'|sh

答え3

find /Your/Folder -type d -regextype posix-extended -regex ^[^\.].*$ -exec chmod -R 755 {}

^[^\.]:ドットで始まるすべてのファイル名を除外します。

関連情報