Confuso sobre comandos de piping de find para commandX?

2

Eu tenho um script, run.sh , que se parece com isso:

#!/bin/bash
FILES=$(find corpus/ -type f)
for i in $FILES
do
    ./individual.sh $i
done

Ele é executado sem problemas.

Eu quero acabar com o script de execução, canalizando cada arquivo de find para ./individual .

Eu acho que eu poderia fazer:

find corpus/ -type f | ./individual.sh

Mas ao tentar que ele simplesmente envie um arquivo com o nome do arquivo "" (levando a um erro).

Qual é a sintaxe adequada para isso?

    
por bernie2436 24.10.2014 / 17:07

1 resposta

3

Você vai querer usar a opção -exec do find:

find corpus/ -type f -exec ./individual.sh {} \;

Para cada correspondência que find encontrar, ele executará individual.sh, substituindo {} pelo nome do arquivo encontrado. \; é como você termina um exec com o find.

A razão pela qual o seu pipe não funciona é que a saída do find está sendo fornecida para individual.sh via STDIN, não como um argumento. Seu script precisaria saber para procurar por alguma entrada, ou argumentos por STDIN para fazer uso disso.

    
por 24.10.2014 / 17:14