Remove arquivos com sufixos de nome de arquivo menores

0

Eu tenho um diretório de arquivos com nomes semelhantes, mas com o acréscimo de dígitos como um sufixo. Eu quero remover os arquivos com menor sufixo e manter apenas os arquivos com o maior sufixo. Abaixo está uma lista de arquivos de exemplo:

1k_02.txt
1k_03.txt
1l_02.txt
1l_03.txt
1l_04.txt
2a_05.txt
2a_06.txt
4c_03.txt
4c_04.txt

A lista acima precisa ser reduzida aos arquivos abaixo:

1k_03.txt
1l_04.txt
2a_06.txt
4c_04.txt

Eu nem sei por onde começar com isso, mas, se possível, eu gostaria de um único comando bash.

    
por user300457 29.11.2017 / 20:59

2 respostas

0

Pipeline complexo :

Lista de arquivos:

$ ls
1l_04.txt 2a_05.txt 4c_03.txt 1k_03.txt 1l_02.txt 4c_04.txt 2a_06.txt 1l_03.txt 1k_02.txt
printf "%s\n" * | sort -t'_' -k1,1 -k2nr | awk -F'_' 'a[$1]++' | xargs rm

Resultados:

$ printf "%s\n" *
1k_03.txt
1l_04.txt
2a_06.txt
4c_04.txt
    
por 29.11.2017 / 21:47
1

com zsh :

$ ls
1k_02.txt  1l_02.txt  1l_04.txt  2a_06.txt  4c_04.txt
1k_03.txt  1l_03.txt  2a_05.txt  4c_03.txt
$ (typeset -A seen; for f (*_*(nOn)) ((seen[${f%_*}]++)) && rm -- $f)
$ ls
1k_03.txt  1l_04.txt  2a_06.txt  4c_04.txt
    
por 29.11.2017 / 21:17