Как переименовать файл в Linux, удалив определенные символы из имени файла? - PullRequest
4 голосов
/ 23 февраля 2012

Как я могу переименовать файл в linux, чтобы удалить определенные символы из имени файла?

Например,

My123File.txt для переименования в My123.txt

Ответы [ 3 ]

9 голосов
/ 23 февраля 2012

Если у вас все в порядке только с подстановочными знаками (не полными регулярными выражениями), то вы можете попробовать что-то вроде

f='My123File.txt'
mv $f ${f/File/}

Этот тип расширения оболочки задокументирован здесь .

Если вам действительно нужны регулярные выражения, попробуйте

f='My123File.txt'
mv $f $(echo $f | sed -e 's/File//')
4 голосов
/ 23 февраля 2012

переименование пользователя, вот тест:

$ touch My123File.txt
$ rename 's/File//' My123File.txt

См. man rename. rename поддерживает регулярные выражения, так что вы можете сделать это, например, выполнить в безопасном месте, например, / тм или около того:

cd /tmp
rm *.txt
touch My123File.txt My456File.txt
ls *.txt
rename 's/([A-Za-z]+)(\d+)(\w+)/$3-999-$2-$1/' *.txt
ls *.txt

дает это:

My123File.txt  My456File.txt
File-999-123-My.txt  File-999-456-My.txt
0 голосов
/ 23 февраля 2012

С mmv эта команда намного проще. Он также поддерживает переводы, такие как нижний регистр позиционного параметра.

mmv '*File.txt' '#1.txt'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...