ajuda com truncate \ find

2

Este comando não funciona:

$ truncate -s 0 $(find . -size +1c type -f -exec grep -LwE 'keyword1|keyword2|keyword3' {} +)

"find: paths must precede expression: type
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
truncate: missing file operand
Try 'truncate --help' for more information."

Nota: Eu entendo que o espaço em branco pode causar problemas.

$ rm $(find . -size +1b -type f -exec grep -LwE 'keyword1|keyword2|keyword3' {} +) 

funciona corretamente, mas não é o que eu preciso também.

    
por Guest in need of help 14.01.2014 / 04:09

2 respostas

4

Não use a substituição de comando na saída de find . Já que você já está usando opções específicas do GNU:

find . -size +1c -type f -exec grep -LZwE 'keyword1|keyword2|keyword3' {} + |
  xargs -r0 truncate -s 0
    
por 14.01.2014 / 11:36
3

Esse erro foi causado apenas pelo traço estar no lugar errado ("type -f" vs "-type f"). Use:

truncate -s 0 $(find . -size +1c -type f -exec grep -LwE 'keyword1|keyword2|keyword3' {} +)

Para lidar com nomes de arquivos com espaços:

find . -size +1c -type f -exec grep -LwE 'keyword1|keyword2|keyword3' {} + | while IFS= read -r fname ; do truncate -s 0 "$fname" ; done
    
por 14.01.2014 / 06:48

Tags