Listando os arquivos em um dispositivo a partir da linha de comando [duplicado]

0

No lado esquerdo do visor do Dolphin, uma das categorias mostradas é "Dispositivos". Assim como seria de esperar, clicar em qualquer um dos dispositivos listados mostra os arquivos disponíveis a partir desse dispositivo, por exemplo, uma câmera ou um cartão de memória. se o dispositivo não for somente leitura, você pode até usar o visor do Dolphin para adicionar arquivos ao dispositivo. Mas como se pode obter a mesma lista de arquivos (para qualquer dispositivo listado) a partir da linha de comando, usando ls ou algo semelhante a ele? Espero que o método seja o mesmo, não importa qual seja a natureza do dispositivo. E se o dispositivo é gravável, como você escreveria a partir da linha de comando?

    
por Paul A. 14.11.2015 / 00:05

2 respostas

2

Com a linha de comando, há um pequeno bit que você deve ter em mente - ele deve ser montado (em outras palavras, conectado programaticamente ao sistema; ele pode estar fisicamente conectado como uma unidade USB à porta USB, mas isso não significa que está montado).

Verificar se o dispositivo está montado é fácil o suficiente - lsblk , df comandos ou mount sem nenhum - flags / options.

Agora, por padrão, a GUI do Ubuntu, como o Unity ou o Gnome, monta automaticamente os dispositivos que você conecta. Com a linha de comando pura ou uma GUI que não faz isso automaticamente (como openbox ou blackbox ), você precisa emitir o comando mount ou udiscksctl mount --block /dev/sd* , em que * é a letra desse dispositivo. Eu preferiria o último, já que ele é montado automaticamente na pasta /media . Com mount , você precisa especificar a pasta. Também com o mount você tem que saber o tipo de sistema de arquivos, como NTFS (windows), ext4 (linux), FAT (muitos drives USB).

Quanto à listagem real dos arquivos, há muitas maneiras

  • find /directory/where/device/mounted -type f é uma maneira recursiva de listar todos os arquivos em todas as pastas desse dispositivo.
  • ls /mount/folder
  • stat /mount/folder
  • dir , que é igual a ls
por Sergiy Kolodyazhnyy 14.11.2015 / 00:25
1

A frase No UNIX, tudo é um arquivo pode ser aplicado aqui: Cada unidade física conectada ao seu computador será representada por um ou mais arquivos dentro de /dev , desde que seja reconhecida pelo sistema.

Para serem legíveis e graváveis, esses dispositivos precisam ser montados em algum lugar. Para obter uma lista de todos os dispositivos montados, use o comando mount . Aqui está um extrato da minha tabela de montagem:

/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
/dev/sdc1 on /media/sebastian/some-id type ext4 (rw,nosuid,nodev,uhelper=udisks2)

Se o seu dispositivo não estiver listado aqui, ainda não está montado. A maioria dos gerenciadores de arquivos monta automaticamente as unidades quando elas estão conectadas, mas, se não estiverem, ou você não está usando um gerenciador de arquivos, você pode fazer isso manualmente. Primeiro liste as partições que você obteve com lsblk . Isso fornecerá informações como as seguintes:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 232.9G  0 disk 
├─sda1   8:1    0 224.8G  0 part /
├─sda2   8:2    0     1K  0 part 
└─sda5   8:5    0   8.1G  0 part [SWAP]
sdc      8:32   1   3.8G  0 disk 
└─sdc1   8:33   1   3.8G  0 part /media/sebastian/some-id

A partir daqui, podemos ver que o pendrive USB que acabei de conectar é enumerado como /dev/sdc e tem uma partição com o número 1. Essa partição pode ser encontrada em /dev/sdc1 . Como você percebeu, ele já está montado, mas vamos supor que não é. Aqui estão os passos para montar manualmente uma unidade:

  1. mkdir /mnt/somedir criará um diretório com o nome somedir (altere o nome no tempo livre) dentro de /mnt . Aqui você montará a unidade.
  2. mount /dev/sdc1 /mnt/somedir tentará montar a partição /dev/sdc1 (a única partição do meu pendrive) em /mnt/somedir
  3. Caso isso falhe, talvez seja necessário fornecer argumentos opcionais, porque a montagem é bastante inteligente, mas nem sempre é possível adivinhar o que fazer. Para isso, é melhor observar as opções apresentadas em man mount . Uma opção que você pode precisar pode ser -t <type> para indicar o formato da partição, por exemplo %código%. Se o mount reclamar que você não tem as permissões necessárias, adicione-se ao grupo mount -t vfat /dev/sdc1 /mnt/somedir ou execute o comando mount como root com plugdev

A partição deve agora ser montada, portanto, execute novamente sudo mount <...> para ver a nova entrada. Agora você pode pular para a partição montada com mount . Agora digite cd /mnt/somedir para listar o conteúdo da unidade.

Para obter arquivos da unidade para o seu computador e vice-versa, use o comando ls :

cp <source> <destination>

por exemplo,

cp image1.png image2.png image3.png /home/username/Pictures

copia os três arquivos para a sua pasta Imagens.

Para desmontar um dispositivo depois de usá-lo, use o comando cp :

umount /dev/sdc1

ou

umount /mnt/somedir

Agora você pode excluir com segurança o diretório de montagem, mas não é necessário.

    
por s3lph 14.11.2015 / 00:28