Найти уникальные значения из find

Linux не отображает диски так, как это делает windows, нет дисков C:// или D://. Вместо них используются пути типа /dev/sd[a-z] для устройств хранения данных.

Вы можете перечислить свои диски, запустив в терминале sudo fdisk -l, который выведет что-то вроде:

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 23E0BCFE-73E5-4702-BE8D-844C25A199D6

Device       Start       End   Sectors   Size Type
/dev/sda1     2048    923647    921600   450M Windows recovery environment
/dev/sda2   923648   1128447    204800   100M EFI System
/dev/sda3  1128448   1161215     32768    16M Microsoft reserved
/dev/sda4  1161216 234440703 233279488 111.2G Microsoft basic data


Disk /dev/sdb: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3C00E7B6-CD0C-4474-B2EE-FBABBBDB07C5

Device       Start       End   Sectors   Size Type
/dev/sdb1     2048   1050623   1048576   512M EFI System
/dev/sdb2  1050624   5244927   4194304     2G Linux swap
/dev/sdb3  5244928 234441614 229196687 109.3G Linux filesystem

Здесь вы видите, что у меня есть два диска, /dev/sda с 4 разделами /dev/sda[1-4] и /dev/sdb с тремя разделами /dev/sdb[1-3].

В linux доступ к дискам осуществляется путем их монтирования в корневой файловой системе. Это можно сделать с помощью команды mount, например: sudo mount /dev/sda4 /mnt, что позволит мне читать/писать на раздел windows, перейдя по адресу /mnt. Размонтировать диск можно с помощью umount /dev/sda4 (не unmount).

Файловые браузеры GUI также могут монтировать диски, но как именно - зависит от того, какой именно браузер вы используете (большинство из них достаточно очевидны, но не всегда показывают внутренние диски). Как правило, в графических интерфейсах вы увидите метку файловой системы, а не имя устройства. Вы можете посмотреть соответствие между файлом устройства и меткой файловой системы, а также их тип с помощью blkid -s LABEL -s TYPE.

4
15.03.2017, 18:32
2 ответа

С инструментами GNU:

find . -name '*.lib' -print0 | awk -v RS='\0' -F/ '! seen[$NF]++'
10
27.01.2020, 20:47

Вот что я бы сделал:

find -name '*.lib' -printf '%f\n' | sort | uniq > lib_file_list

Несколько вещей, о которых следует помнить:

  • это не даст вам полных путей к файлам (я предполагаю, что это не имеет значения , поскольку ваш вопрос в любом случае требует исключения некоторых путей)
  • он не даст результата, если у вас есть символы новой строки в любом из ваших имена файлов
  • и, конечно, с использованием инструментов GNU.
2
27.01.2020, 20:47

Теги

Похожие вопросы