Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Is there a command that will list all partitions along with their labels? sudo fdisk -l and sudo parted -l don't show labels by default.

EDIT: (as per comment below) I'm talking about ext2 labels - those that you can set in gparted upon partitioning.

EDIT2: The intent is to list unmounted partitions (so I know which one to mount).

share|improve this question

migrated from stackoverflow.com Jun 1 '11 at 17:25

This question came from our site for professional and enthusiast programmers.

1  
Labels? What's a label? Are you talking about ext2 labels? Those have nothing to do with partition tables per se. –  Chris Jester-Young Mar 30 '11 at 6:33
    
Hi @Chris Jester-Young, thanks for your comment! I have tried to clarify above - yes, I believe it is ext2 labels I'm talking about... Cheers! –  sdaau Mar 30 '11 at 6:37
4  
Partitions don't have labels, but file systems do. You need a combination of tools to do that. The blkid tool can tell you label of a known partition. But to find the partition you would have to loop over the output of fdisk. –  Keith Jun 2 '11 at 3:13
1  
@Keith, as a side note, I'd like to add that the new GPT partitions have a name field which is similar to filesystem labels. –  Cristian Ciupitu Jun 3 at 16:26

10 Answers 10

up vote 24 down vote accepted

With udev, there's /dev/disk/by-label that has symlinks by label to at least some partition device nodes.

Not sure what the logic of inclusion is, possibly the existence of a label.

share|improve this answer
1  
At least on my machine, it is indeed only the filesystems with labels that get linked in there, as confirmed(?) by using Alan Kuras' mount -l suggestion. –  Ilkka Mar 30 '11 at 6:43
2  
Hi @Ilkka - thanks for your answer! Indeed, ls -la /dev/disk/by-label seems to show labels of unmounted partitions; so that solves my problem, I guess... Although, I really would have preferred an option for fdisk or parted instead :) Cheers! –  sdaau Mar 30 '11 at 6:46

Why don't you just use lsblk? For instance:

# lsblk -o name,mountpoint,label,size,uuid
NAME                           MOUNTPOINT     LABEL         SIZE UUID
sda                                                         1.4T
├─sda1                         /boot          boot          953M f557b9f0-edb5-42bb-94d8-27bc03c3c2c7
├─sda2                                                     46.6G 727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0)                                      46.6G P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
│   ├─debian_crypt-swap (dm-1) [SWAP]                         2G 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0
│   ├─debian_crypt-tmp (dm-2)  /tmp           tmp             5G 93fc8219-f985-45fb-bd5c-2c7940a7512d
│   ├─debian_crypt-home (dm-3) /home          home            6G 12e8566c-8f0f-45ec-8524-6d9d9ee91eae
│   └─debian_crypt-root (dm-4) /              root         33.6G 9685570b-4c9e-43ea-815e-49d10dc7a1bf
├─sda3                                                    651.9G d3e0436c-85f6-45c6-9d8f-28b79ee06102
│ └─crypt_gusto (dm-8)         /media/Gusto   Gusto       651.9G 0c084508-cb8b-4b61-832d-6b85273f33c4
├─sda4                                                        1K
├─sda5                                                      298G 5063da5f-9b68-43de-914c-32b89622bcc8
│ └─crypt_kabi (dm-7)          /media/Kabi    Kabi          298G e6a0b66c-8fe9-4e7b-9d54-7b2b430e109d
├─sda6                                                    213.6G 5129d860-bb41-4393-b4b1-f8af53d9155d
│ └─crypt_zami (dm-6)          /media/Zami    Zami        213.6G 19101155-6070-4f37-b39d-19f28867c66b
├─sda7                         /media/Server  Server       85.6G a9f4dae5-901c-4f49-bb30-592de3000713
└─sda8                                                    100.6G dc7f4586-a33d-4707-98e9-8b55c559b0d2
  └─crypt_grafi (dm-5)         /media/Grafi   Grafi       100.6G 5e3242e1-ec7a-4806-92f7-88a126feea94
sdb                                                        14.5G
├─sdb1                                        DEBIAN_LIVE     3G 6bf4d915-2b62-444e-a2c8-16307769b5c2
├─sdb2                                                        2G 90ec6f73-8fdb-4c8d-aebd-cadd0f51b412
│ └─crypt_sdb2 (dm-10)         /mnt           data            2G 91e779dd-0a3f-40b2-8ad0-257d860541a6
└─sdb3                                        linux         9.5G 14a783a4-96dd-4a85-8de7-6e8eea230594
loop0                                                      1000M a3be80bf-0f2c-44ed-8de5-d60e3b19c01a
└─crypt_dropbox (dm-9)         /media/Dropbox Dropbox       998M 8461e2cf-ae17-449b-8ee5-29cc88688b8b
zram0                          [SWAP]                       250M f8254ae5-5ae6-4fda-b8ef-83f25c405894
zram1                          [SWAP]                       250M 7e7ed90d-731c-422a-bf9b-828f09b80502

You can specify plenty of columns in whatever order you like:

Available columns:
       NAME  device name
      KNAME  internal kernel device name
    MAJ:MIN  major:minor device number
     FSTYPE  filesystem type
 MOUNTPOINT  where the device is mounted
      LABEL  filesystem LABEL
       UUID  filesystem UUID
         RO  read-only device
         RM  removable device
      MODEL  device identifier
       SIZE  size of the device
      STATE  state of the device
      OWNER  user name
      GROUP  group name
       MODE  device node permissions
  ALIGNMENT  alignment offset
     MIN-IO  minimum I/O size
     OPT-IO  optimal I/O size
    PHY-SEC  physical sector size
    LOG-SEC  logical sector size
       ROTA  rotational device
      SCHED  I/O scheduler name
    RQ-SIZE  request queue size
       TYPE  device type
   DISC-ALN  discard alignment offset
  DISC-GRAN  discard granularity
   DISC-MAX  discard max bytes
  DISC-ZERO  discard zeroes data
share|improve this answer
2  
Thanks for showing me this tool! Note, this application works for regular users, but will show some info (including labels) only as root. –  user689893 Jul 4 at 7:55
1  
Will it show unmounted partitions also? If yes then it solves the question asked. –  Ravi Jul 29 at 7:26
1  
Yes. As you can see sdb1 and sdb3 aren't mounted. –  Mikhail Morfikov Jul 30 at 15:02
1  
or easier to remember lsblk -f which is equivalent to lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT –  LeoR Aug 27 at 16:52

There is a blkid command which may be what you are looking for. Results are similar to the following:

$ sudo blkid /dev/mapper/vg_rootdisk-lv_var
/dev/mapper/vg_rootdisk-lv_var: LABEL="LV_VAR" UUID="08520908-03cd-4e42-a4e4-0f5a771be16c" TYPE="ext4"

One other option is to use the udevadm command, which likely will give you far more than you need:

$ sudo udevadm info --query=all --name=/dev/mapper/vg_rootdisk-lv_var
share|improve this answer

Try to use mount -l, it work's fine for me.

share|improve this answer
2  
Hi @Alan Kuras - thanks and +1 for the answer! However, I want to list unmounted partitions - mount -l seems to show only mounted ones.. Cheers! –  sdaau Mar 30 '11 at 6:43

Try to use this command:

e2label /dev/sda2
share|improve this answer

You can also use this command:

$ sudo udevadm info --query all --path /sys/block/sdb/sdb1 \
     | grep ID_PART_ENTRY_NAME

You can use the above to print all the block devices' info.

$ echo /sys/block/* | xargs -n 1 udevadm info --query all --path
share|improve this answer

This will not list all partitions but you can view and alter what you like with tune2fs.

$ sudo tune2fs -l /dev/sda1

You can use a command such as this to get all the /dev/sda* devices.

$ sudo sh -c 'echo /dev/sda* /dev/mapper/fedora* | xargs -n 1 tune2fs -l'
share|improve this answer

/dev/disk

In newer versions of the Linux kernel this info can now be found here under /dev/disk.

Example

$ ls -l /dev/disk
drwxr-xr-x.  2 root root  300 Jan 11 17:01 by-id
drwxr-xr-x.  2 root root  120 Jan 11 17:01 by-uuid

So you can find it either by-id or by by-uuid.

by-id

$ ls -l /dev/disk/by-id
total 0
lrwxrwxrwx. 1 root root  9 Jan 11 17:01 ata-Optiarc_DVD_RW_AD-7930H -> ../../sr0
lrwxrwxrwx. 1 root root  9 Jan 11 17:01 ata-ST95005620AS_5YX1K0Q5 -> ../../sda
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 ata-ST95005620AS_5YX1K0Q5-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 ata-ST95005620AS_5YX1K0Q5-part2 -> ../../sda2
...
...

by-uuid

$ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../sda1
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../dm-1
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../dm-0
lrwxrwxrwx. 1 root root 10 Jan 11 17:01 xxxxxx -> ../../dm-2

Where the xxxxxx would be an actual UUID such as 5ece678c-1234-5678-12e3-88c06ec11111.

share|improve this answer

e2label didn't work for me with UDF filesystem labels. blkid did;

blkid -s LABEL -o value /dev/sdg1
share|improve this answer

If you like, you can use my bash script for that purpose. It actually does a little more than you need, i. e. it will also show how much space is used. Hope you like it :) And I also hope that the output will be as neat as on my linux box... (Note: it will only show real hardware like your HDDs and DVD-ROMs, but that's sufficient for my purposes.)

Important note: This script might have to be run under sudo ONCE because of blkid. At least on my distro, blkid -o export will output nil when run as regular user after bootup. This is because in the "regular user rendition" of blkid, data will actually be retrieved from a cache file (normally /run/blkid/blkid.tab), which is only writable by root and will thus require one run under sudo in order to get populated with current data.

#!/bin/bash
# LICENSE: GPL

if [[ $(id -u) -ne 0 ]]; then
  if [[ ! -s /run/blkid/blkid.tab ]]; then
   # no cache file found when run as regular user
   # this will require one run under sudo to populate cache file
   echo -e "Cache file does not exist or is empty.\nPlease give your root password to continue:\n\n"   
   sudo blkid >/dev/null
  fi
fi

df -P |
sort  |
awk 'BEGIN {
             fmthdr = "%-12s%-22s%-10s\t%-5s\n"

         # since we want to use single quotes for showing label names, we had better
         # replace the problematic single quote character by its hex representation, "\x27"
             fmtlin_w_qu = "%-12s\x27%-17s\x27\t   %-10s\t%4s used\n"
             fmtlin_wo_qu = "%-12s%-17s\t   %-10s\t%4s used\n"

             printf fmthdr, " Device ",  "Volume Label", "File System", "Storage usage"
             printf fmthdr, "---------", "------------", "-----------", "-------------"
           }    
           /^\/dev\/[sh]/{
              lab = ""      # CLEAR lab w/every run (very important!)
              ("blkid -o export "$1" | grep LABEL | cut -f2 -d=") | getline lab
              ("blkid -o export "$1" | grep TYPE | cut -f2 -d=") | getline fs
              if (lab == "") {
                lab = "<none>"
                fmtlin = fmtlin_wo_qu
              }
              else
                fmtlin = fmtlin_w_qu

              printf fmtlin, $1, lab, fs, $5
           }'
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.