Como faço para ls
arquivos em um diretório começando com um nome de arquivo específico?
Por exemplo, se meu CWD tiver esses arquivos:
$ ls -1
alpha.mp3
bar.xls
file1.txt
file2.txt
foo.odt
testing3.txt
Como imprimo os arquivos começando em, digamos, "arquivo2.txt":
file2.txt
foo.odt
testing3.txt
ou em, digamos, "foo.odt":
foo.odt
testing3.txt
?
Se você usar
zsh
como seu shell, poderá usar seus qualificadores glob para selecionar apenas os nomes de arquivo que não são classificados lexicograficamente antes do arquivo escolhido 1 .Ex. dado
em seguida, defina uma função auxiliar
após o qual
Você pode usar o glob qualificado diretamente para passar a lista para o seu comando parado
nt() { [[ $REPLY > $NTREF ]] }
então definaNTREF
o nome do último arquivo que foi processado com sucessoPara retomar um processo que foi interrompido durante a iteração em uma lista de arquivos, você pode gerar novamente essa lista de arquivos e removê-los até chegar ao arquivo em que deseja reiniciar:
Você poderia então executar seu processo com essa lista de arquivos:
O acima assume que seu processo interrompido recebeu a lista de arquivos em ordem expandida "natural" - que é o que
ls
aconteceria se você não especificasse a lista de arquivos.Aqui está uma solução de pós-processamento
sed
, usando ouawk
:ou
onde, por exemplo,
?-dica: StackOverflow " Sed: imprimir todas as linhas após a correspondência "