Как массово удалить определенные символы из имен каталогов / файлов

Соль объединяется с хэшем при создании дайджеста, который хранится на устройстве. Хэши будут одинаковыми (для данного содержимого), поэтому соль - это способ сделать дайджест другим.

Когда выполняется dm-verity, он сравнивает со списками хэшей, поэтому соль нужна, чтобы сопоставить хэши с дайджестами, которые были сохранены.

Дальнейшее чтение:

1
15.03.2019, 05:08
2 ответа

Вы можете использовать:find. -exec sh -c './correct.sh {}' \;!

С correct.sh в том же каталоге, где вы запускаете указанную выше команду:

#!/bin/bash

mv "$1" $(echo "$1" | sed 's/_-_/_/g');

(Не забудьте chmod +x correct.sh!)

Это не очень элегантное решение, но оно работает. Все говорит само за себя, за исключением, может быть, -exec, который является опцией find, который будет выполняться для каждого имени файлов, процесса, упомянутого здесь (sh -c '...'), и заменить {} на имя файла! См. найти справочные страницы для получения дополнительной информации.

Если вы хотите переименовать только каталог файлов, вставьте -type dв качестве опции поиска. И, конечно же,вы можете изменить столько, сколько хотите, sed, чтобы заменить то, что вы хотите.

0
27.01.2020, 23:41

Сzsh:

$ autoload zmv
$ zmv -n '(**/)(*)' '$1${${${2//[^.[:alnum:]]##/_}##_#}%%_#}'
mv -- TWENTY_ONE_PILOTS_-_DISCOGRAPHY_\(2009-15\)_CHANNEL_NEO\] TWENTY_ONE_PILOTS_DISCOGRAPHY_2009_15_CHANNEL_NEO

Преобразует все последовательности символов, кроме alnums и ., в _, а затем рекурсивно удаляет начальные и конечные _во всех файлах и каталогах.

-nдля пробного прогона , удалите его, когда все будет хорошо.

Если вы хотите переименовать только файлы типа каталог , измените (**/)(*)на(**/)(*)(#q/)

1
27.01.2020, 23:41

Теги

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