Haveria uma maneira de usar a saída de ls -ltr
with xargs
?
Suponha que o resultado de ls seja um arquivo conforme abaixo.
ls -ltr | tail -1 | xargs -I{} open {}
Para comparação, eu uso o seguinte comando para usar find para mover arquivos:
find ~/Downloads/ -iname '*hello*' -print0 | xargs -0 -I{} mv {} ./
Podemos de alguma forma usar o caractere NUL?
[Resolvido]
Conforme mencionado nos comentários do @illkachu, o seguinte funciona, mas não é sugerido.
somecmd "$(ls -tr | tail -1)"
O que Stéphane sugere parecem ser alternativas.
Geralmente, você não faria isso, pois a saída
ls
não é pós-processável de forma confiável.Por exemplo:
não funciona se o nome do arquivo mais recente contiver caracteres de nova linha.
Idealmente, você gostaria de:
Mas, infelizmente, não conheço nenhuma
ls
implementação que suporte uma opção-z
/-0
, e os mantenedores do GNUls
pelo menos se recusaram várias vezes a adicioná-la .Agora, existem outras maneiras com algumas implementações.
Com as implementações GNU e ast-open de
ls
, na localidade C, a saída com a--quoting-style=shell-always
opção é pós-processável porzsh
,ksh93
oubash
:Embora em zsh, você apenas faria
ou:
como
zsh
tem suporte integrado para classificar arquivos por hora de modificação (e muitos outros critérios que vão muito além dosls
recursos).O FreeBSD
ls
tem a--libxo
opção de gerar saída json ou xml, então você pode fazer:Mas então seria mais simples fazer tudo em
perl
.Como você já foi informado: Em geral, essa não é a abordagem que você deseja escolher. No entanto, para começar: