从命令行列出设备上的文件

从命令行列出设备上的文件

在 Dolphin 显示屏的左侧,显示的类别之一是“设备”。正如人们所期望的那样,单击任何列出的设备都会显示该设备可用的文件,例如相机或记忆棒。如果设备不是只读的,您甚至可以使用 Dolphin 显示屏将文件添加到设备。但是,如何使用命令行获取相同的文件列表(针对任何列出的设备)ls或者类似的东西?无论设备的性质如何,我都希望方法相同。如果设备是可写的,您将如何从命令行写入它?

答案1

使用命令行时需要记住一点 - 它必须被安装(换句话说,通过编程连接到系统;它可能像 USB 驱动器一样物理连接到 USB 端口,但这并不意味着它已被安装)。

检查设备是否已安装很容易 -lsblk使用df命令或mount无需任何-标志/选项。

现在,默认情况下,Ubuntu 的 GUI(如 Unity 或 Gnome)会自动挂载您连接的设备。使用纯命令行或不自动执行此操作的 GUI(如openboxblackbox),您必须发出mount命令 或udiscksctl mount --block /dev/sd*其中 * 是该设备的字母。我更喜欢最后一个,因为它会自动挂载到/media文件夹。使用mount您必须指定文件夹。此外,使用 mount 您必须知道文件系统类型,如 NTFS(windows)、ext4(linux)、FAT(许多 USB 驱动器)。

至于文件的实际列表,有很多方法

  • find /directory/where/device/mounted -type f是一种递归方式,用于列出该设备上所有文件夹中的所有文件。
  • ls /mount/folder
  • stat /mount/folder
  • dir这与ls

答案2

词组在 UNIX 中,一切皆文件可以在这里应用:每个插入你计算机的物理驱动器,/dev只要被系统识别,里面都会有一个或多个文件来表示。

为了能够读写,这些设备需要挂载在某个地方。要获取所有已挂载设备的列表,请使用命令mount。以下是我的挂载表的摘录:

/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)

如果您的设备未在此处列出,则表示尚未安装。大多数文件管理器会在插入驱动器时自动安装驱动器,但如果没有,或者您没有使用文件管理器,则可以手动执行此操作。首先列出您使用 获得的分区lsblk。这将提供如下信息:

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

从这里我们可以看到我刚插入的 USB 驱动器被枚举为/dev/sdc,并且它有一个分区,编号为 1。此分区可以在 找到/dev/sdc1。正如您所注意到的,它已经安装,但我们假设它没有安装。以下是手动安装驱动器的步骤:

  1. mkdir /mnt/somedir将在里面创建一个名为somedir(可随意更改名称)的目录/mnt。在这里您将挂载驱动器。
  2. mount /dev/sdc1 /mnt/somedir将尝试安装分区/dev/sdc1(我的 USB 记忆棒的唯一分区)在/mnt/somedir
  3. 如果失败,您可能需要提供可选参数,因为 mount 非常聪明,但不能总是猜出要做什么。为此,最好查看 中提供的选项man mount。您可能需要的一个选项是-t <type>指示分区格式,例如mount -t vfat /dev/sdc1 /mnt/somedir。如果 mount 抱怨您没有必要的权限,请将自己添加到组plugdev或以 root 身份执行 mount 命令sudo mount <...>

现在应该已挂载分区,因此再次运行mount以查看新条目。现在您可以使用 跳转到已挂载的分区cd /mnt/somedir。现在键入ls以列出驱动器的内容。

要将文件从驱动器传输到计算机,反之亦然,请使用以下cp命令:

cp <source> <destination>

例如

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

将把这三个文件复制到您的图片文件夹中。

要在使用后卸载设备,请使用以下umount命令:

umount /dev/sdc1

或者

umount /mnt/somedir

您现在可以安全地删除挂载目录,但不必这样做。

相关内容