2016-03-10 4 views
0

У меня возникли проблемы с переименованием группы файлов, которые заканчиваются вопросительным знаком ?.Использование unix rename для сохранения произвольных цифр

Мои файлы выглядеть следующим образом:

eufk_B737? 
. 
. 
. 

Я понятия не имею, что это означает, что знак вопроса, но с использованием переименовать, чтобы удалить последний символ, он не работает.

Как бы сделать что-то вроде этого:

...... -a.k.a 6 arbitrary characters + 
digit of arbitrary length? (to get rid of the ? mark) 

Пример ввода:

4lg9_A125? 

пример вывода:

4lg9_A125 

виду, что? ПРЕДСТАВЛЯЕТ МЕНЬШЕ ЧИТАЮЩЕГО ХАРАКТЕРА И НЕ?

спасибо.

+0

Пожалуйста, добавьте точный ввод и ожидаемый результат. – jkdba

+0

[how-to-remove-invalid-characters-from-filenames] (http://serverfault.com/questions/348482/how-to-remove-invalid-characters-from-filenames) – jkdba

+0

Удаление недопустимых символов работало благодаря! –

ответ

0
for file in *; do mv -v $file $(echo $file | sed -e 's/[^A-Za-z0-9._-]//g'); done 
+0

Это не работает. Знак вопроса, по-видимому, представляет собой нечто иное, чем?, Поэтому регулярное выражение должно быть построено с самого начала, я думаю. –

+0

«?» Может отображаться вместо чего-то менее читаемого, поэтому попытка сопоставить его буквально может не сработать. – wallyk

+1

Ох ... так это как непечатаемый персонаж или что-то в этом роде? Извините, я не понял, что из вопроса. Пожалуйста, отредактируйте свой вопрос, чтобы уточнить, что ... каждый ответ основан на том, что он является буквальным '?' – Munir

0

Вы можете использовать команду find, чтобы найти соответствующие файлы, а затем выполнить команду mv на каждом из них:

find . -maxdepth 1 -name "*\?" -exec sh -c "echo {} | sed 's/\?$//' | xargs mv {}" \; 

Как это работает:

find . -maxdepth 1 -name "*\?" - находит все файлы, оканчивающиеся только в текущем каталоге (нерекурсивный)

-exec sh -c "..." - для каждого файла выполняется соответствующий код

echo {} | sed 's/\?$//' | xargs mv {} - удалить ? с конца файла и переименовать старый файл ({})

Смежные вопросы