grep / list bash recursivo

1
parts = grep "/root/backups/*"

for part in $parts
do
    echo $part
    rm -rf $part #delete
done

Eu basicamente preciso fazer uma iteração em uma pasta e retornar todos os itens da pasta usando um script Bash.

Não é possível trabalhar via grep, embora seja muito mais simples. A primeira linha é um código pseudo-não-indício puro.

    
por James 21.12.2010 / 20:58

4 respostas

3

Isso pode ser feito facilmente sem loop.

Se você quiser apenas se livrar dos arquivos, use rm:

$ rm -rf /root/backups/*

Se você quiser mostrar os nomes dos arquivos à medida que os exclui, use a localização:

$ find /root/backups -maxdepth 1 -mindepth 1 -print -exec rm -rf {} \;

A opção -maxdepth informa ao find para não descer mais do que um nível a partir do ponto de partida, / root / backups. A opção -mindepth informa a localização de onde começar a retornar os resultados, informando efetivamente a localização para ignorar o ponto inicial. A opção -print apenas imprime os arquivos encontrados na tela. Com o -exec, o {} é substituído pelos arquivos encontrados, portanto, isso chama o rm para excluí-los.

EDIT: eliminou um desnecessário -exec por comentário

    
por 21.12.2010 / 21:43
1

Altere o comando grep para:

for i in ''ls -bRC1 /path/* ; do echo $i ; rm $i ; done

O -b irá escapar de espaços e outros caracteres que podem resultar em erros e conseqüências não intencionais com o rm. -R é recursivo. -C1 é uma coluna única (que pode ser redundante). Eu reconsideraria o -rf

Você pode querer usar o find ao invés de um loop for

find /path -H -maxdepth 3 -type f -mtime +7 -exec rm {} \; -ls

Se você não souber o que significam as opções acima, digite man find .

    
por 21.12.2010 / 21:35
0

grep -l fornecerá apenas os nomes dos arquivos

parts = grep -rl ....

    
por 21.12.2010 / 21:34
0

Você deseja uma lista de nomes de arquivos em um determinado diretório. Existe um programa que faz isso e você fica com vergonha de ler seu nome: ls . Isso é tudo que faz! Você deseja uma listagem recursiva incluindo arquivos em subdiretórios, portanto, use ls -R . Você pode colocar a saída disso em uma variável em seu script e fazer o que quiser com ela.

    
por 22.12.2010 / 01:57

Tags