Como encontrar uma pasta baseada em ordem numérica [no bash cli]

3

Estou lidando com enormes dados de imagem e está seguindo como

/root/folder1
/root/folder2
/root/folder3
/root/folder4
...

No entanto, na verdade, os nomes das subpastas não são escritos explicitamente com números.

Então, se eu quiser encontrar a 230ª ordem da pasta, eu preciso contar um por um. Como posso encontrá-lo de maneira inteligente?

Obrigado!

    
por Mark Yoon 05.04.2018 / 14:57

3 respostas

1

Como não sabemos como você os encomenda, vou assumir que está em ordem alfabética e, nesse caso, execute o seguinte em um terminal:

cd /enter/dir/here
ls | sort | head -n 230 | tail -n 1

Isto irá ordenar ls em ordem alfabética, apenas obter os primeiros 230 resultados, e depois pegar o último desses 230.

    
por NerdOfLinux 05.04.2018 / 15:09
0

Supostamente você está usando o Ubuntu, então nautilus é o seu navegador de arquivos. Se sim, então CTRL + F e digite o nome da pasta. Mas, como você disse, a pasta não está explicitamente em números, mas você pode mudar no canto superior direito para mostrar a pasta por detalhes, em vez de ícones, e então escolher modificado por data.

    
por E_Angel 05.04.2018 / 15:07
0

Eu costumo usar bash , no entanto, esta é uma daquelas tarefas para as quais você pode querer considerar mudar para zsh para que você possa usar o Qualificadores glob

print dir/*(/on[230])

Explicação:

  • / : corresponde aos diretórios
  • on : classifica em crescente o rder por n ame (para ordem decrescente, use letras maiúsculas O )
  • [230] : limite os resultados para o intervalo especificado

O qualificador de intervalo é mais geralmente da forma [m,n] - você também pode usar [230,230] neste contexto.

Se você precisar fazer isso em bash , as ferramentas externas serão necessárias: aqui está um método que deve ser seguro para todos os nomes de arquivos (mesmo aqueles com novas linhas incorporadas):

printf '%s
print dir/*(/on[230])
' dir/*/ | sort -z | awk -vRS='
printf '%s%pre%' dir/*/ | sort -z | awk -vRS='%pre%' 'NR==230 {print; exit}'
' 'NR==230 {print; exit}'
    
por steeldriver 05.04.2018 / 15:22

Tags