私はこれを持っています:
chmod u+x $(find scripts -name "*.sh")
しかし、結果は改行で区切られているので、検索リストの最初の項目でのみchmod u + xを実行すると思います。
find呼び出しで返された各項目に対してchmod u + xをどのように実行しますか?
私の考えでは、xargsが最善の方法ですか?このような:
find scripts -name "*.sh" | xargs chmod u+x
答え1
最も安全な方法は、直接find
実行してchmod
ファイルを選択するときにさらに注意することです。
find scripts -type f -name '*.sh' -exec chmod u+x {} +
scripts
これは、名前で終わるディレクトリ内または下のすべての一般的なファイルを探し、同時にできるだけ多くのファイルで実行されます.sh
。chmod u+x
潜在的に奇妙なファイル名を問題なく処理します。
権限が必要なファイルに対してのみ権限を変更するには:
find scripts -type f -name '*.sh' ! -perm -u+x -exec chmod u+x {} +