フォルダ内のすべてのファイルに対してコマンドを実行する方法

フォルダ内のすべてのファイルに対してコマンドを実行する方法

rubyたとえば、このツリーがあり、そのフォルダ内のすべてのスクリプトを実行したいとします。アーカイブをどのように渡すことができますか?1行コマンド

./
../
rb-script/
    sample1.rb
    sample2.rb

答え1

(シェルによる)

for file in rb-script/*.rb; do ruby "$file"; done

これで問題が解決します。または(シェルとは関係ないと思います)

find rb-script -type f -exec ruby "{}" \;

find;状況に応じてより具体的に使用できます。

find rb-script -maxdepth 1 -type f -name '*.rb' -exec ruby "{}" \;

一般的に言えば、複数のファイルを許可すると(ファイルの数がシェルのコマンドライン引数の最大値より少ない場合)、機能します。command <glob-pattern>しかし、それは疑問です。 (しかし、あなたが望むことをするためにラッパースクリプトを書くことができます。)commandrubyruby-wrapper rb-script/*.rb

答え2

これがデーモンの一部である場合は、次のものを使用できます。コンポーネントの実行このコマンドは、フォルダ内のすべての項目をアルファベット順に実行します。このコマンドは、終了コマンドを逆の順序で実行する必要がある場合に特に便利です。

関連情報