fazendo loop e excluindo o cabeçalho em diretórios específicos [closed]

2

Eu quero percorrer apenas diretórios específicos e excluir a primeira linha de arquivos fornecidos como parâmetros de entrada nesses diretórios.

Meus parâmetros de entrada devem ser:

  • -i [input_directory] - diretório raiz
  • -n [directory] diretórios para verificar arquivos
  • file ending

Executar como

sh -i /main/folder/ -n (sub1|sub2|sub6) .txt

O script só deve excluir o cabeçalho dos arquivos *.txt nas pastas sub1 , sub2 e sub6 em /main/folder/ .

Agora eu tenho abaixo o script que faz um loop através de todas as pastas e exclui o cabeçalho, mas não tenho certeza de como percorrer apenas a pasta especificada

for $file in $i/*/*.txt do
    sed '1,1d' $file
done

Por favor, deixe-me saber se haverá alguma utilidade se mudarmos a forma como inserimos os parâmetros.

    
por Roshni 26.06.2018 / 23:49

1 resposta

1

Minha intuição sobre os comandos que permitem especificar um diretório de trabalho é que ele é o primeiro parâmetro. Que você tenha correto, embora você possa perder a opção de comando -i .

Em segundo lugar, quaisquer opções com vários valores (como os vários subdiretórios específicos em que você deseja pesquisar) devem ser as últimas. Dessa forma, eles não interferem muito com os outros.

Eu proporia chamar seu comando assim:

~$ mycommand /my/root/dir "txt" -sdirs sub1 sub2 sub6

Bash e talvez sh também tem o shift builtin, que permite alternar entre os argumentos fornecidos. Você pode extrair as informações necessárias da linha de comando da seguinte forma:

#!/bin/bash

WORK_DIR="$1"
shift # shifts $2 to $1
FILE_END="$1"
shift
if [ "-sdirs" = "$1" ]; then
    shift # get to the sub dirs
    while [ -n "$1" ]; do # tests if there is a sub dir
        # *do your magic here*
        # $1 should be a sub dir
        # $WORK_DIR/$1/*$FILE_END for example

        # to the next one, break if nothing left
        shift || break
    done
else
    echo "No sub directories specified"
    exit 1
fi

Isso é o que eu faria do topo da minha cabeça. Mais tratamento de erros é apropriado e deixado como um exercício para o leitor.

    
por 27.06.2018 / 01:22

Tags