Como executar um comando em todos os arquivos dentro de uma pasta

6

Dizendo, eu tenho essa árvore e quero executar ruby em todos os scripts dentro da pasta. Como eu poderia arquivar através de uma linha de comando .

./
../
rb-script/
    sample1.rb
    sample2.rb
    
por steveyang 10.03.2012 / 11:15

2 respostas

9

Algo ao longo das linhas (dependendo do seu shell) de

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

deve fazer o truque; alternativamente (e shell-independente, eu acho)

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

usando find ; onde você pode, dependendo da sua situação, ser mais específico, à la

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

Em geral, command <glob-pattern> também funcionaria se command aceitar vários arquivos (e houver menos arquivos que o argumento de linha de comando máximo do seu shell), mas duvido que ruby faça isso. (Você poderia escrever um script wrapper tal que ruby-wrapper rb-script/*.rb faria o que você quiser, no entanto.)

    
por 10.03.2012 / 11:29
1

Se isso fizer parte de um daemon, você poderá usar as partes de execução comando para executar tudo na pasta em ordem alfabética. Este comando é especialmente útil se você precisar executá-lo na ordem inversa para o desligamento.

    
por 11.03.2012 / 00:21