Как удалить определенные символы из имен файлов с помощью BASH - PullRequest
28 голосов
/ 30 сентября 2009

У меня есть много файлов с общим шаблоном в названии, которые я хотел бы удалить. Например, у меня есть файлы "a_file000.tga" и "another_file000.tga". Я хотел бы выполнить операцию с этими файлами, которая бы удалила шаблон «000» из их имен, что привело бы к новым именам «a_file.tga» и «another_file.tga».

Ответы [ 5 ]

54 голосов
/ 30 сентября 2009

Bash может делать sed -подобные замены:

for file in *; do mv "${file}" "${file/000/}"; done
45 голосов
/ 30 сентября 2009

Попробуйте (это работает и в старой доброй Борне sh):

for i in *000.tga
do
    mv "$i" "`echo $i | sed 's/000//'`"
done

Оба аргумента заключены в кавычки для поддержки пробелов в именах файлов.

9 голосов
/ 30 сентября 2009

Решение не Bash, так как я знаю, что два быстрых плаката уже покрывали это:

Существует отличная короткая Perl-программа под названием rename, которая установлена ​​по умолчанию в некоторых системах (в других есть менее полезная программа переименования). Это позволяет вам использовать Perl Regex для переименования, например:

rename 's/000//' *000*.tga
3 голосов
/ 30 сентября 2009
#!/bin/bash
ls | while read name; do
  echo mv $name ${name/$1//}
done
2 голосов
/ 04 июня 2018

Используйте переименование, может быть, вам нужно установить его на Linux, его скрипт Python

rename (option) 's/oldname/newname' ...

так что вы можете использовать его как

rename -v 's/000//' *.tga

это означает, что мы указываем заменить все файлы с расширением .tga в этой папке, чтобы заменить 000 пустым пространством. Надеюсь, что работает

Вы можете проверить эту ссылку для получения дополнительной информации и здесь

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