Minha pasta parent
tem o seguinte conteúdo:
A.Folder B.Folder C.File
Possui pastas e arquivos dentro. B.Folder
é mais novo. Agora eu só quero entender B.Folder
, como eu poderia conseguir isso? Eu tentei isso,
ls -ltr ./parent | grep '^d' | tail -1
mas isso me dá drwxrwxr-x 2 user user 4096 Jun 13 10:53 B.Folder
, mas eu só preciso do nome B.Folder
.
shell
files
ls
timestamps
Daniel
fonte
fonte
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'
Respostas:
Tente o seguinte:
-t
As opções sãols
classificadas por hora da modificação, as mais novas primeiro.Se você deseja remover
/
:fonte
/
?ls -td -- ./parent | head -n 1
, não me fornece os resultados corretos, PRECISO usar subshell, comocd ./parent
sempre, e executar este comando? Qualquer solução?A diferença da solução de Herson é a barra seguinte
*
, que faz com que o shell ignore todos os arquivos não-dir. Diferença do Gnouc , ele funcionará se você estiver em outra pasta.Cut precisa saber o número de diretórios pai (2) para excluir '/' à direita. Se você não tiver isso, use
fonte
Resposta obrigatória do zsh:
Os caracteres entre parênteses são qualificadores globais :
/
para corresponder apenas aos diretórios,om
para classificar correspondências aumentando a idade e[1]
para reter apenas a primeira correspondência (ou seja, a mais nova). AdicioneN
se você deseja obter uma matriz vazia (normalmente você obtém uma matriz com 1 elemento) se não houver subdiretório deparent
.Como alternativa, supondo que
parent
não contenha nenhum caractere globbing do shell:Se você não possui o zsh, mas possui ferramentas GNU recentes (por exemplo, Linux ou Cygwin não incorporado), pode usá-
find
lo, mas é complicado. Aqui está uma maneira:Existe uma solução simples
ls
, que funciona desde que nenhum nome de diretório contenha novas linhas ou (em alguns sistemas) caracteres não imprimíveis:fonte
Você pode fazer:
fonte
O comando a seguir fará o trabalho mesmo no caso de o nome do diretório conter espaço:
A explicação atualizada das coisas nos backticks é:
.
- o diretório atual (você pode especificar um caminho absoluto aqui)-mindepth/-maxdepth
- restrinja o comando find apenas aos filhos imediatos do diretório atual-type d
- somente diretórios-exec stat ..
- gera a hora modificada e o nome do diretório a partir da localização separada por uma guia (e não um espaço)sort -n -r |head -1 | cut -f2
- date ordena o diretório e gera o nome inteiro do modificado mais recentemente (mesmo que contenha algum espaço como guia delimitadora padrão de corte)fonte