árvore será muito conveniente para você.
sudo apt-get install tree
usando tree filepath
para listar os arquivos.
Para uma tarefa minha, eu preciso listar todos os arquivos em uma árvore (um diretório, todos os seus subdiretórios, todos os subdiretórios deles, etc.).
Eu preferiria vê-los no Nautilus ou no Krusader, mas uma solução de linha de comando também é interessante (neste caso, eu precisarei dos nomes completos dos arquivos, tamanhos e tempos de modificação a serem listados).
árvore será muito conveniente para você.
sudo apt-get install tree
usando tree filepath
para listar os arquivos.
ls -alR
Esse é provavelmente o método mais simples. Eu só estou hackeando um script de busca para dar a você mais controle.
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"
Você pode jogar com a formatação printf o quanto quiser. Isso oferece uma excelente oportunidade para que as coisas sejam formatadas da maneira que você precisa, o que é inestimável se você estiver usando a saída em outro aplicativo.
Mais: link
Para melhor legibilidade, você pode canalizar tudo através do comando column
e redimensionar automaticamente as coisas para que elas se alinhem.
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t
Como Oli respondeu, find
permitirá que você pesquise em uma árvore de diretórios inteira:
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"
# Where %TY will display the mod. time year as 4 digits
# %Tm will display the mod. time month as 2 digits
# %Td will display the mod. time day as 2 digits
# %s displays the file size in bytes
# %p displays the full path name of the file
Você também pode querer usar a opção -type f
para limitar os resultados a apenas arquivos. Se você quiser corresponder a um padrão de arquivo, você deseja as opções -name
ou -iname
(correspondência sensível a maiúsculas e minúsculas, respectivamente). Leia a man page do find
- há uma quantidade substancial de opções que você pode usar para restringir / refinar sua pesquisa.
E, além disso, se você espera que várias telas cheias de dados sejam jogadas de volta em você, lembre-se de enviar seus resultados por meio de less
.
@Oli: +1 Acabei de aprender algo novo também - column
. Não tinha usado isso antes.
ls
é o comando padrão para listar arquivos no Ubuntu e em outros sistemas operacionais Linux e Unix. ls
é particularmente útil para aprender porque você o encontrará instalado em todos os sistemas Unix que você já conheceu. Por padrão, isso exibe apenas os arquivos no diretório atual.
No entanto, a -R
'flag' é a opção recursiva (observe a maiúscula R , não r ) que mostrará a todos vocês os subdiretórios também.
Você também pediu "detalhes" - para isso, você deseja o sinalizador -l
(que é um L minúsculo, não o número um). Esteja ciente de que isso fornece informações sobre as permissões de arquivos, além do tamanho do arquivo, informações de hora / data e nome do arquivo.
Se você quiser também mostrar pastas / arquivos ocultos (o equivalente a Ctrl + H no Nautilus) adicione o sinalizador -a
'all'.
Você pode mesclar sinalizadores juntos para fornecer algo como:
ls -lR
Se você executar isso em qualquer pasta de tamanho decente, descobrirá que isso produz uma grande saída longa que rola a tela rapidamente. Para contornar isso, você pode "canalizar" a saída de ls
por meio de um programa chamado less
(o nome é uma paródia do more
semelhante, que estava por perto primeiro, mas tem mais recursos).
ls -lR | less
Isso permitirá que você use as teclas de seta para cima / para baixo, ao lado de PageUp / Down para percorrer a saída em uma velocidade mais confortável.
Usando o Krusader:
Isso permitirá que você processe todo o lote arrastando para o outro painel, etc.
Que tal um script do Nautilus ?
#!/bin/bash
#
# AUTHOR: (c) 2013 Glutanimate (https://askubuntu.com/users/81372)
# NAME: DirTree 0.1
# DEPENDENCIES: zenity tree (install with sudo apt-get install zenity tree)
# LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
#
# DESCRIPTION: Creates a directory tree at the current location. If you want you
# can filter the output by a pattern (e.g. *.avi to only include avi
# files).
TITLE=DirTree
# Get working directory
WORKINGDIR="'python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI'"
# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")
# Filter pattern
zenity --question --title "$TITLE" --text "Do you want to filter by a specific file pattern?"
if [ "$?" = "1" ]
then
customtree="tree"
else
PATTERN=$(zenity --entry --title "$TITLE" --text="Please enter a file pattern (e.g. *.avi)")
if [ -z "$PATTERN" ]
then
exit
else
customtree="tree -P $PATTERN"
fi
fi
# Directory tree
$customtree "$WORKINGDIR" > "$WORKINGDIR/directorytree_$TIME.txt"
Instruções de instalação: Como posso instalar um script do Nautilus?
Eu criei um programa especialmente para isso - Directory Snapshot .
Ele itera de maneira recursiva por meio de um diretório e armazena os nomes e tamanhos de todos os arquivos e pastas que encontra em arquivos HTML bem estruturados, que têm uma organização semelhante à do diretório de entrada.
Em outras palavras, isso pode ser considerado uma versão com hiperlink do dir /s
ou < Comandos href="https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/pt-br/tree.mspx?mfr=true"> tree /f
.
Isso também funciona no Nemo.
você pode colocá-los em seu arquivo .bashrc
function _get_tree(){ ls -alR | while read LINE; do echo $LINE | grep ":$" > /dev/null; if [ $? -eq 0 ]; then VAR=$(echo $LINE | grep ":$"| sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' | tee /dev/tty); fi; echo $LINE | grep "^-" > /dev/null; if [ $? -eq 0 ]; then size=${#VAR}; for i in $(eval echo "{1..$size}"); do echo -n ' '; done; echo -n '..'; echo $LINE | cut -d ' ' -f9; fi; done; };
alias get_tree='_get_tree'
Agora, você pode usar o comando get_tree em qualquer diretório e exibir toda a hierarquia.
Sintaxe:
$ get_tree
Exemplo de saída:
.
..test.sh
|-2
..123.log
|---3
|-----4
|-5
|---6
Espero que isso ajude !!