Como listar arquivos e diretórios de um ponto de montagem

1

Dado um ponto de montagem como / dev / sda1, como posso listar o conteúdo deste sistema de arquivos usando o shell script. Meu objetivo é excluir o arquivo mais antigo nesta unidade.

    
por Rakesh R Nair 17.11.2014 / 11:29

2 respostas

3

/dev/sda1 é um dispositivo de bloco. Pode conter um sistema de arquivos. Quando montado, esse sistema de arquivos pode estar disponível em algum ponto de montagem como /home , / e dentro desse sistema de arquivos, alguns diretórios podem ser alguns pontos de montagem para outros sistemas de arquivos (eles podem estar em outros dispositivos de bloco, ou virtuais como /proc , ou os de rede ...).

Se /dev/sda1 estiver montado em / , para remover o arquivo mais antigo (em termos de tempo de última modificação) regular , em um sistema GNU recente, você pode fazer:

find / -xdev -type f -printf '%T@:%p
mount --bind / /mnt/side-access-to-root
' | sort -zn | sed -z 's/[^:]*://;q' | xargs -r0p rm -f

O -xdev sinalizador diz find para se ater a um sistema de arquivos, ou seja, para não descer em outros sistemas de arquivos montados dentro de / neste caso.

Observe que outros sistemas de arquivos podem ocultar arquivos no sistema de arquivos do ponto de montagem. Por exemplo, se /dev/sda1 estiver montado em / , mas contiver /home/some-old-file e /dev/sda2 estiver montado em /home , /home/some-old-file não estará acessível.

Pelo menos no Linux, você pode contornar isso montando bind / em outro diretório:

rm -i /mnt/side-access-to-root/**/*(D.Om[1])

Em seguida, todos os arquivos no sistema de arquivos montados em / estarão disponíveis em /mnt/side-access-to-root .

Em seguida, você pode omitir o -xdev e usar o zsh globbing para remover o arquivo mais antigo:

find / -xdev -type f -printf '%T@:%p
mount --bind / /mnt/side-access-to-root
' | sort -zn | sed -z 's/[^:]*://;q' | xargs -r0p rm -f
    
por 17.11.2014 / 11:44
1

/ dev / sda1 não é um ponto de montagem, ele aponta para sua partição em sua unidade.

Para montar seu disco use

mount -t vfat(OR THE TYPE OF YOUR DRIVE) /dev/sda1 /path/to/mount/to

Em seguida, para listar todos os arquivos em um caminho, você pode usar

ls

No entanto, para excluir todos os arquivos com mais de X dias, você pode usar:

find /path/to/files* -mtime +x -exec rm {} \;
    
por 17.11.2014 / 11:33