У меня проблема с переносом папок на внешний жесткий диск - я не хочу менять форматирование на HD.
Итак, в папке сотни файлов, и ошибка, не позволяющая мне их скопировать, исходит из-за специальных символов (я не знаю, какие именно, но я считаю, что это "|" и ".", И я уверен, что есть и другие . Я вручную переименовывал / удалял их, но это больно.
Открыт для предложений, но я «предполагаю», что я ищу способ удалить эти конкретные символы из имени файла (это могло бы вызвать проблема с .m4a и т. д.?), или замените их подчеркиванием, если необходимо. Единственное, что у меня есть, это переименование perl, но я еще не пробовал.
переименовать 'y / | / _ /' * {{1} } как это?
спасибо за любые предложения
Если вы попробуете приложение "диски", вы увидите, что есть еще как минимум один раздел. Вы ищете именно этот раздел, а не раздел EFI, который содержит только загрузочные файлы. Вы можете смонтировать нужный раздел, нажав кнопку "play" в приложении "disks".
EDIT:
Поскольку это раздел LVM2, вам следует выполнить следующие шаги:
Установить LVM2
$ sudo apt install lvm2
Просканировать раздел LVM2
запустить
$ sudo vgscan
или
$ sudo vgscan --mknodes
в результатах указывается группа LVM.
Для ее активации выполните
$ sudo vgchange -ay
или
$ sudo vgchange -ay "LVM_Group_Name"
где "LVM_Group_Name" обозначает группу LVM, указанную в предыдущем шаге (пишите ее без кавычек)
Для ее перечисления выполните следующую команду
$ sudo lvdisplay
или
$ sudo lvs
Смонтируйте раздел LVM2
Создайте точку монтирования
$ sudo mkdir -vp /mnt/My_Lovely_Partition_Name/{root,home}
(вместо точку
$ sudo mkdir -vp /mnt/My_Lovely_Partition_Name/{root,home}
(вместо My_Lovely_Partition_Name вы можете использовать любое имя, какое захотите)
Смонтируйте домашний и корневой тома из LV пути
$ sudo mount {LV_PATH} /path/to/mount/point/
$ sudo mount /dev/LVM_Group_Name/home /mnt/My_Lovely_Partition_Name/home
$ sudo mount /dev/LVM_Group_Name/root /mnt/My_Lovely_Partition_Name/root
Проверьте его
$ df -T
$ df -T | grep -i fedora
$ ls /mnt/My_Lovely_Partition_Name/root
$ ls /mnt/My_Lovely_Partition_Name/home
Обновите файл /etc/fstab, если хотите, чтобы он монтировался автоматически при загрузке
/dev/mapper/LVM_Group_Name-root /mnt/My_Lovely_Partition_Name/root ext4 defaults 0 0
/dev/mapper/LVM_Group_Name-home /mnt/My_Lovely_Partition_Name/home ext4 defaults 0 0
Все кредиты получает Vivek Gite
-... 121---915185-Вы должны:
sudo dpkg-reconfigure locales
"кнопке" CLI)Да (основанная на Perl) команда rename
является хорошим кандидатом для этого. Вы можете добавить опцию -n
или --nono
для пробного запуска замены, например:
-n, --nono
No action: print names of files to be renamed, but don't rename.
так, например
$ rename -n 'y/|./__/' *\|*
rename(foo|bar.baz, foo_bar_baz)
rename(foo|bar|baz, foo_bar_baz)
Обратите внимание, что rename
не позволит вам деструктивно перезаписать файлы, если их имена не уникальны:
$ rename -v 'y/|./__/' *\|*
foo|bar.baz renamed as foo_bar_baz
foo|bar|baz not renamed: foo_bar_baz already exists
Обратите внимание, что .
является не специальным символом в контексте имен файлов, поэтому я бы предложил не заменять его.
В целом mmv
отлично справляется с задачами массового переименования.
Но в этом конкретном случае я бы пошел совершенно другим путем: сгенерировал сценарий оболочки с парой команд оболочки, внимательно посмотрел на него, если это действительно то, что я хочу, и затем выполнил его.
Примерный план:
ls -Q >/tmp/old.txt
cp /tmp/old.txt /tmp/new.txt
ls -Q
добавит двойные кавычки вокруг каждого имени, то есть даст вам «foo * bar»
или «foo | bar»
].
Затем замените ненужные символы в /tmp/new.txt
либо вручную с помощью редактора, либо с помощью sed -i -e
(или perl -p -i - e
, если хотите) или tr
или tr -d
. Важно: не изменяйте порядок в этом файле, а также не удаляйте и не добавляйте какие-либо строки!
В любом случае, внимательно посмотрите /tmp/new.txt
, чтобы увидеть, действительно ли это то, что вы хотите, чтобы новые имена выглядели.
Проверьте повторяющиеся имена! ( sort /tmp/new.txt | uniq -r
) Убедитесь, что нет дубликатов, и если они есть, отредактируйте эту строку вручную, чтобы получить уникальное имя.
Затем соедините файлы с помощью команды paste
и измените каждую строку на команду mv
:
paste /tmp/old.txt /tmp/new.txt | sed -e 's/^/mv -n /' >/tmp/bulk-rename
То, что делает эта команда paste
, требует одна строка из /tmp/old.txt
и одна строка из /tmp/new.txt
и объединяет их в одну строку с пробелом между ними. Часть sed
добавляет mv -n
в начало каждой из этих строк. mv -n
предотвращает перезапись существующего файла.
Этот файл теперь содержит много строк вроде
mv -n "foo" "bar"
mv -n "abc" "def"
. Посмотрите на файл еще раз, и когда вы уверены, что это то, что вам нужно, выполните его с помощью sh / tmp / bulk-rename
.