Этот ответ от Alex B из Stack Overflow поможет вам переименовать как файлы, так и подпапки в каталоге.
Он заключается в использовании команд Linux find
и rename
. Я бы только добавил, что команда, указанная в приведенной выше ссылке, также изменит имена каталогов. Если вы хотите изменить только имена файлов, вам нужно изменить параметр -depth
на следующий: -type f
.
Еще одно регулярное выражение, данное команде rename
, может быть приведенным ниже, и я думаю, что его легче понять.
find my_root_dir -type f -execdir rename 'y/A-Z/a-z/' {} \;
Имейте в виду, что между регулярным выражением команды переименовать
и фигурными скобками есть необходимый пробел, а между ними и символом завершения команды \;
Также помните, что он переименует каждый файл не только в каталоге, из которого вы выполняете команду (каталог my_root_dir
), но также и во все файлы в каждой подпапке, содержащейся в этом. Вы можете использовать опцию -maxdepth 0
с командой find
, чтобы заставить ее применять тесты и действия только к самим начальным точкам.
Большинство файловых систем имеют уникальные UUID и метки, для которых вы можете установить различные значения . Они позволяют вам обращаться к тому, содержащему файловую систему, через / dev / disk / by-uuid
или / dev / disk / by-label
. Другие типы томов (RAID, LVM и т. Д.) Также обычно имеют название. Тома RAID и LVM собираются на основе уникальных идентификаторов физических томов, независимо от того, как этот том подключен. Так что обращаться к диску как таковому - это необычно.
Если вам действительно нужен доступ к диску в зависимости от способа его подключения, вы можете использовать / dev / disk / by-id
. Записи имеют вид ШИНА - СЕРИЙНЫЙ
или ШИНА - ИМЯ - СЕРИЙНЫЙ
. Все подкаталоги / dev / disk /
поддерживаются udev , кстати, в частности, правилами постоянного хранения .
Другое решение - создать собственные символические ссылки в папке / dev
. Для этого вы можете написать правила udev. Добавьте файл /etc/udev/rules.d/50-local-persistent-disks.rules
, содержащий правила вроде
SUBSYSTEM=="block", ATTRS{model}=="Yoyodine HD9001", \
ATTRS{serial}=="123-456-789", \
SYMLINK+="myfancyname"
Запустите udevadm info -a / dev / sda
, чтобы увидеть какие … ==…
шаблоны вы можете использовать. Если вы используете несколько шаблонов, они должны быть из одного выходного блока, вы не можете смешивать шаблоны с разных родительских устройств.
Я думаю, вы можете безопасно использовать ссылки /dev/disk/by -id/, которые привязаны только к типу/модели диска:
lrwxrwxrwx 1 root root 9 Jul 14 15:13 ata-Hitachi_HDS123456789_PVC1234567890 ->../../sda
Маловероятно, что путь /dev/disk/by -может совпасть с контроллером:
lrwxrwxrwx 1 root root 9 Jul 14 15:13 pci-0000:00:1f.2-ata-2 ->../../sda
lrwxrwxrwx 1 root root 10 Jul 14 15:13 pci-0000:00:1f.2-ata-2-part1 ->../../sda1
lrwxrwxrwx 1 root root 11 Jul 14 15:40 pci-0000:00:1f.2-ata-2-part10 ->../../sda10
lrwxrwxrwx 1 root root 11 Jul 14 15:43 pci-0000:00:1f.2-ata-2-part11 ->../../sda11
lrwxrwxrwx 1 root root 11 Jul 14 15:13 pci-0000:00:1f.2-ata-2-part12 ->../../sda12
В моем случае я исправил это, смонтировав /dev/sdb (дополнительный жесткий диск )в моем домашнем каталоге (пример :-/home/username/Data ). Но если я монтирую /dev/sdb внутри /mnt, он меняет местами sda и sdb каждый раз, когда я перезагружаю компьютер.