Как переименовать файлы в каталоге, таком как следующий файл: PMC21375.pdf.txt
мне нужно переименовать в 21375.txt
. т.е. мне нужно удалить оба PMC
и pdf
из каждого имени файла.
10
rename 's/(PMC|\.pdf)//g' *pdf.txt
Демо:
$ ls *txt
PMC21375.pdf.txt
$ rename -n 's/(PMC|\.pdf)//g' *txt
PMC21375.pdf.txt -> 21375.txt
из shell
подсказки. Это очень полезно, вы можете поместить некоторый Perl- код, как я, в подстановку.
Вы можете удалить -n
(переключатель режима холостого хода), когда ваши тесты станут действительными.
Существуют другие инструменты с таким же именем, которые могут или не могут сделать это, поэтому будьте осторожны.
Если вы запустите следующую команду ( linux
)
$ file $(readlink -f $(type -p rename))
и у вас есть результат, как
.../rename: Perl script, ASCII text executable
тогда это кажется правильным инструментом =)
Если нет, чтобы сделать его по умолчанию (обычно уже так) Debian
и производной, как Ubuntu
:
$ sudo update-alternatives --set rename /path/to/rename
(заменить /path/to/rename
путь вашей perl's rename
команды.
Наконец, что не менее важно, этот инструмент был первоначально написан Ларри Уоллом, отцом Perl.
.pdf
из имени файла.Помимо команды переименования вы можете сделать это непосредственно в bash (только один из многих способов):
Отредактировано, чтобы показать Пиньяке, как это работает:
источник
.pdf
из имени файла.Существует несколько утилит для переименования файлов, но одна из самых простых в использовании
rename
. В вашем случае вы, вероятно, можете сделать:Первый параметр - это часть имени файла, которую нужно заменить. Второй параметр - строка замены. Здесь я использую
''
для представления пустой строки. Все следующие параметры являются файлами для переименования, здесь я использовал*txt
для ограничения замены текстовые файлы.rename
должен уже присутствовать, если вы работаете в Linux. Если вы используете * BSD или OS X, вам, возможно, придется сначала установить его.источник
rename
. Есть один изutil-linux
и одинperl
с другим синтаксисом. Один вы ссылаетесь на внешний вид , как один из ,util-linux
который иногда называютrename.ul
так, чтобы не путать сrename
сperl
, в то время как на некоторых других системах,rename
является один из Util-Linux и один изperl
называютсяprename
.rename 's/PMC// *.txt
иrename s/\.pdf// *.txt
Сначала сделайте резервную копию ваших файлов! Тогда в основном вы можете использовать однострочник Python в текущем каталоге в общем виде:
в вашем конкретном случае вы можете использовать это дважды:
удалить
.pdf
и снова:удалить
PMC
.источник
Попробуй это:
for i in *.pdf.txt; do j=${i//\.pdf/}; j=${j//PMC/}; mv $i $j; done
В
j=${i//\.pdf/}
средстве заменить.pdf
в$i
корыте. Точно так же со вторым назначением j избавиться от PMC.источник
Если вы используете
zsh
, это типичная работа дляzmv
:(
zmv
обрабатывает потенциальные конфликты изящно).источник