Eu faria algo como:
ls -1 | grep "\.png$" | xargs -L 50 rm -f
Isso corresponderá (e removerá) somente os arquivos terminados em .png
.
Eu experimentei um pouco no linux e acabei recebendo muitos arquivos em uma única pasta. Agora quando tento fazer
rm -f folder/*.png
Eu obtenho
-bash: /bin/rm: Argument list too long
Existe alguma maneira fácil de superar isso?
Trabalho próprio:
Eu suponho que eu poderia fazer um roteiro feio que circula no resultado de algo como
ls /folder/ | head -100 | grep ".*\.png"
Mas, na verdade, deve haver uma maneira mais fácil de fazer o Gnu?
Quando você usa rm -f folder/*.png
ou mesmo rm *
, o shell (não rm) expandirá o * para todos os arquivos relevantes. Em seguida, ele chamará rm com todos os nomes de arquivos expandidos. (por exemplo, se vai fazer um 'rm filename1 nome do arquivo2 nome do arquivo3 nome do arquivo4 nome do arquivo5 nome do arquivo6 nome do arquivo7 .... nome do arquivo12345'
Se essa lista for muito longa para passar, você receberá este erro.
Solução: Divida-o em partes menores ou não use o shell. Por exemplo. encontrar com --delete é uma boa opção.
find /path/to/file -name "*.PNG" -delete \;
find /path/to/file -name "*.PNG" -exec rm \;
(executa rm uma vez para cada arquivo) find /path/to/file -name "*.PNG" -delete +
(agrupa-os em pedaços pequenos o suficiente para passar para rm) A primeira opção é aquela que eu costumo usar. Primeiro testado com -print.
Tags command-line rm arguments