各改行区切り文字に対してコマンドを実行する

各改行区切り文字に対してコマンドを実行する

私はこれを持っています:

 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これは、名前で終わるディレクトリ内または下のすべての一般的なファイルを探し、同時にできるだけ多くのファイルで実行されます.shchmod u+x潜在的に奇妙なファイル名を問題なく処理します。

権限が必要なファイルに対してのみ権限を変更するには:

find scripts -type f -name '*.sh' ! -perm -u+x -exec chmod u+x {} +

おすすめ記事