Estou tentando encontrar o maior arquivo em um diretório recursivamente. Se houver um subdiretório dentro desse diretório, a função precisará entrar nesse diretório e verificar se o arquivo maior está lá. Depois que o arquivo maior é encontrado, a saída é exibida com o nome do caminho relativo e o nome e tamanho do arquivo maior.
EX:
dude@shell2 (~...assignment/solutions) % bash maxfile.sh ~/test
class/asn
dude.h.gch: 9481628
Isto é o que eu tenho:
#!/bin/sh
clear
recursiveS() {
for d in *; do
if [ -d $d ]; then
(cd $d; echo $(pwd)/$line; du -a; recursiveS;)
fi
done
}
recursiveS
Estou preso há um tempo agora. Não consigo implementar isso pipelining de várias ferramentas Unix existentes. Alguma idéia seria legal!
bash
shell-script
recursive
user2419571
fonte
fonte
for d in */ .[^.]*/
; fazer ... `Respostas:
use
find
(aqui assumindo o GNUfind
) para gerar nomes de arquivos com o tamanho do arquivo. ordenar. imprima o maior.Isso pressupõe que os caminhos do arquivo não contêm caracteres de nova linha.
Usando um loop
bash
com a implementação GNU destat
:Isso será significativamente mais lento que a solução de localização. Isso também pressupõe que os nomes dos arquivos não terminam em caracteres de nova linha e ignoram os arquivos ocultos e não descem para os diretórios ocultos.
Se houver um arquivo chamado
-
no diretório atual, o tamanho do arquivo aberto no stdin será considerado.Cuidado que as versões
bash
anteriores à 4.3 seguiam os links simbólicos ao descer a árvore de diretórios.fonte
tail -n 1 <(sort -n <(find . -type f -printf "%s\t%p\n"))
)Este comando também ajuda a listar o tamanho definido.
fonte
Isso funciona no BSD / macOS:
Você também pode anexar
| head -n 3
para exibir várias entradas interessantes (3 neste caso).fonte
man find
eman sort
, use brainz :-)Com
zsh
, para o maior arquivo regular:(é claro que você pode substituir
ls -ld --
por qualquer comando. Se estiver usando o GNUls
ou compatível, consulte também a-h
opção para tamanhos legíveis por humanos ).
: apenas arquivos regulares (não diretórios, links simbólicos, dispositivos, fifos ...)D
: inclua os ocultos e desça em dirs ocultosOL
: ordem inversa por tamanho (L
ength).[1]
: apenas a primeira partida.Se houver laços, você receberá qualquer um deles aleatoriamente. Se você deseja o primeiro em ordem alfabética, adicione um extra
on
(o
rder porn
ame) para classificar os laços em ordem alfabética.Observe que ele considera o tamanho dos arquivos, não o uso do disco.
fonte
[1]
por[1,10]