Como fazer loop em vários subdiretórios para localizar arquivos usando o bash [closed]

1

Eu preciso percorrer vários subdiretórios para encontrar arquivos fastq.

Os arquivos fastq estão em /path/sample/a/b/c/.fastq

atualmente eu uso isso:

${inputDir}/**/**/**/*.fastq 

Meu inputdir será apenas: / path / sample, já que suas três subpastas eu uso "/ ** /" três vezes. Mas às vezes nenhuma das subpastas pode mudar.

Existe alguma outra maneira eficiente de percorrer vários subdiretórios.

Meu script bash:

#! /bin/bash -l

CWD=$(pwd)
dateStamp=$(date +%s)
SeqProj="${inputDir}/**/**/**/*.fastq"

for Dir in $SeqProj
do

done
    
por nadish 03.07.2017 / 01:58

2 respostas

2

find / -iname '*.fastq' -exec /path/to/foo.sh {} \;

Então foo.sh é um script que faz o que você está chamando dentro de seu loop, usando $ 1 para referenciar o arquivo encontrado cujo nome foi passado para o script.

A resposta de Mike também funciona, depende do que você quer fazer com isso ...

    
por 03.07.2017 / 04:03
0

A maneira mais fácil é usar find :

for Dir in $(find "$inputDir" -name '*.fastq')
    
por 03.07.2017 / 03:54