私は次のコマンドを持っています
find . -type f -print0 | xargs -0 chmod 644
ファイル名にスペースが含まれていなければ、。のすべてのファイルのアクセス許可が644に正常に変更されます。ただし、一般的には機能しません。
例えば
touch "hullo world"
chmod 777 "hullo*"
find . -type f -print0 | xargs -0 chmod 644
返却値
/bin/chmod: cannot access `./hello': No such file or directory
/bin/chmod: cannot access `world': No such file or directory
スペースが埋め込まれたファイルを処理できるようにコマンドを変更する方法はありますか?
アドバイスありがとうございます。
xargs
なし
find . -type f -exec chmod 644 {} \;
またはxargs
で
find . -type f -print0 | xargs -0 -I {} chmod 644 {}
使用されるxargs
スイッチ
-0
空白または文字(改行を含む)がある場合、多くのコマンドは機能しません。このオプションは、空白のあるファイル名を処理します。
-I
initial-arguments内のreplace-strの出現を標準入力から読み取った名前に置き換えます。また、引用符で囲まれていない空白は入力項目を終了しません。代わりに、区切り文字は改行文字です。
here からの説明