Corresponde a todos os arquivos que terminam com uma certa extensão com um shell glob (digamos, todos os arquivos terminados com .sh)

1

Desejo corresponder todos os arquivos que terminam com uma certa extensão com um shell glob.

Neste caso, desejo segmentar todos os arquivos que terminam com a extensão .sh , que são arquivos bourne que executo com o shell Bash depois de colocar um "shebang" (como #!/bin/bash ) na primeira linha.

Este é, por exemplo, um comando cron que eu tenho:

0 0 * * * "$HOME"/public_html/cron_daily/myfile.sh 2>/dev/null

Em vez de myfile.sh, preciso segmentar todos os arquivos nesse diretório, finalizando com a extensão .sh .

O código a seguir está correto?

0 0 * * * "$HOME"/public_html/cron_daily/*$.sh 2>/dev/null

Atualizar

Acho que isso é bom quando se usa um glob:

*.{sh}
    
por user9303970 11.07.2018 / 19:38

2 respostas

1

Você não pode fazer isso dessa maneira, pois eles serão combinados em uma linha de comando.

for scr in "$HOME"/public_html/cron_daily/*.sh ; do "$scr" 2> /dev/null; done
    
por 11.07.2018 / 19:40
4

Você só usaria *.sh para corresponder a todos os arquivos com a extensão .sh . (Adicionando o caminho conforme apropriado.)

No entanto, isso não terá o resultado que você está buscando. Veja run-parts para executar vários scripts em cron :

0 0 * * * /usr/bin/run-parts "$HOME"/public_html/cron_daily/ 2>/dev/null

(Isto irá executar todos os executáveis em .../public_html/cron_daily , não apenas .sh arquivos. A propósito, você tem certeza que é uma boa idéia manter os scripts cron sob public_html ? Esse diretório está sendo servido pelo seu servidor web? ?)

    
por 11.07.2018 / 19:39