xargs + chmod - ファイルまたはディレクトリが見つかりません

xargs + chmod - ファイルまたはディレクトリが見つかりません

私のプロジェクト内のすべてのファイルとディレクトリの権限を繰り返し変更しようとしています。

私が一つ見つけたマゼントフォーラムに投稿次のコマンドが使用できるとします。

find ./ -type f | xargs chmod 644
find ./ -type d | xargs chmod 755
chmod -Rf 777 var
chmod -Rf 777 media

効果がありましたfind ./ -type d | xargs chmod 755

このコマンドはfind ./ -type f多くのファイルを返しますchmod: access to 'fileXY.html' not possible: file or directory not foundfind ./ -type f | xargs chmod 644

この問題をどのように解決できますか?

PS:彼は私のvarフォルダとmediaフォルダに対して777の権限を使用することを提案したことを知っています。これにはセキュリティリスクがありますが、何を使用する必要がありますか?

答え1

xargs名前に文字が含まれているため、ファイルが分割される現象が発生したようです。例えばスペース。この問題を解決するには、find適切なオプション(GNUバリアントから派生し、POSIXで指定されていない)をサポートするバージョンを使用しているとし、次のxargsコマンドを使用する必要があります。

find . -type f -print0 | xargs -0 chmod 644
find . -type d -print0 | xargs -0 chmod 755

またはより良い方法は

chmod -R a-x,a=rX,u+w .

利点は、プロセスが短く、1つのプロセスのみが使用され、POSIXchmod(望むよりこの回答詳細はこちら)。

あなたの質問はmedia非常にvar広範囲です。特定の回答に興味がある場合は、ディレクトリの使用に関する追加情報を含む別の質問で質問することをお勧めします。

答え2

どうですか?

find ./ -type d -exec chmod 755 {} +

これは、ファイル名の改行まで処理する標準的な移植可能なソリューションです。

関連情報