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

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

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

Responder1

/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, por sua vez, ser alguns pontos de montagem para outros sistemas de arquivos (podem estar em outros dispositivos de bloco ou virtuais como /proc, ou rede...).

Se /dev/sda1estiver montado em /, para remover o mais antigo (em termos da hora da última modificação)regulararquivo, em um sistema GNU recente, você pode fazer:

find / -xdev -type f -printf '%T@:%p\0' |
   sort -zn |
   sed -z 's/[^:]*://;q' |
   xargs -r0p rm -f

O -xdevsinalizador diz findpara manter um sistema de arquivos, ou seja, não descer para outros sistemas de arquivos montados /neste caso.

Observe que outros sistemas de arquivos podem ocultar arquivos no sistema de arquivos do seu ponto de montagem. Por exemplo, se /dev/sda1estiver montado, /mas contiver um /home/some-old-filee /dev/sda2estiver montado em /home, /home/some-old-filenão estará acessível.

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

mount --bind / /mnt/side-access-to-root

Então todos os arquivos no sistema de arquivos montado em /estarão disponíveis através do /mnt/side-access-to-root.

Então, você pode omitir -xdeve usar zshglobbing para remover o arquivo mais antigo:

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

Responder2

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

Para montar seu disco use

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

Então, para listar todos os arquivos em um caminho, você pode usar

ls

No entanto, para excluir todos os arquivos anteriores a X dias, você pode usar:

find /path/to/files* -mtime +x -exec rm {} \;

informação relacionada