Как заменить символы% -encoded в связке имен файлов подчеркиванием с помощью команд оболочки?

Я загрузил много файлов, некоторые из которых содержат недопустимые символы, закодированные на что-то вроде %2C, %2F ...

Я пробовал rename 's/%[0-9][A-Z]/_/g * и rename 's/\%[0-9][A-Z]/_/g *, но они ничего не делают. (Извините, моя ошибка. [F5] работает. Я вводил некоторые опечатки или что-то, что связано с символами полной ширины / полуширины ... ONZ .......... Plz голосует, чтобы закрыть это Q)

Например, имена файлов file,1.pdf, file/2.pdf ... закодированы как file%2C1.pdf, file%2F2.pdf. Я хочу переименовать их в file_1.pdf, file_2.pdf, ...

-1
задан 17 July 2017 в 20:44

6 ответов

Вы можете использовать:

rename 's/%/_/g' *

Сначала запустите его, используя опцию -n (сухой запуск), чтобы убедиться, что все в порядке:

rename -n 's/%/_/g' *

Чтобы записать номер тоже:

rename -n 's/%[0-9]/_/g' *

или даже использовать что-то вроде этого, чтобы удалить все символы, кроме буквенно-цифровых:

$ rename -n 's/[^a-zA-z0-9]/_/g' *
rename(%SOME%2FFOR%, _SOME_2FFOR_)
rename(SOME%2FFOR, SOME_2FFOR)
rename(SOME%2FFOR%, SOME_2FFOR_)
0
ответ дан 22 May 2018 в 20:28
  • 1
    похоже, предложение @ steeldriver хорошее. Примеры необходимы для уточнения моего Q. – Lee 17 July 2017 в 20:39

Вы можете использовать:

rename 's/%/_/g' *

Сначала запустите его, используя опцию -n (сухой запуск), чтобы убедиться, что все в порядке:

rename -n 's/%/_/g' *

Чтобы записать номер тоже:

rename -n 's/%[0-9]/_/g' *

или даже использовать что-то вроде этого, чтобы удалить все символы, кроме буквенно-цифровых:

$ rename -n 's/[^a-zA-z0-9]/_/g' * rename(%SOME%2FFOR%, _SOME_2FFOR_) rename(SOME%2FFOR, SOME_2FFOR) rename(SOME%2FFOR%, SOME_2FFOR_)
0
ответ дан 18 July 2018 в 10:08

Вы можете использовать:

rename 's/%/_/g' *

Сначала запустите его, используя опцию -n (сухой запуск), чтобы убедиться, что все в порядке:

rename -n 's/%/_/g' *

Чтобы записать номер тоже:

rename -n 's/%[0-9]/_/g' *

или даже использовать что-то вроде этого, чтобы удалить все символы, кроме буквенно-цифровых:

$ rename -n 's/[^a-zA-z0-9]/_/g' * rename(%SOME%2FFOR%, _SOME_2FFOR_) rename(SOME%2FFOR, SOME_2FFOR) rename(SOME%2FFOR%, SOME_2FFOR_)
0
ответ дан 24 July 2018 в 19:31

используйте следующий скрипт, скопируйте сценарий и сохраните его в /bin как renamer.sh, а затем в любое время, когда вы захотите сделать какие-либо переименования в файлах этого типа, используйте простую команду renamer.sh #Input files#;

#!/bin/bash

for input in $@;
    do 
        inputMod=$( echo "$input" | sed 's/\(%\)/\_/pg' );
        mv "$input" "$inputMod" &> /dev/null; 
        shift; 
    done;
0
ответ дан 22 May 2018 в 20:28

используйте следующий скрипт, скопируйте сценарий и сохраните его в /bin как renamer.sh, а затем в любое время, когда вы захотите сделать какие-либо переименования в файлах этого типа, используйте простую команду renamer.sh #Input files#;

#!/bin/bash for input in $@; do inputMod=$( echo "$input" | sed 's/\(%\)/\_/pg' ); mv "$input" "$inputMod" &> /dev/null; shift; done;
0
ответ дан 18 July 2018 в 10:08

используйте следующий скрипт, скопируйте сценарий и сохраните его в /bin как renamer.sh, а затем в любое время, когда вы захотите сделать какие-либо переименования в файлах этого типа, используйте простую команду renamer.sh #Input files#;

#!/bin/bash for input in $@; do inputMod=$( echo "$input" | sed 's/\(%\)/\_/pg' ); mv "$input" "$inputMod" &> /dev/null; shift; done;
0
ответ дан 24 July 2018 в 19:31

Другие вопросы по тегам:

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