Подтвердить что ты не робот

Как удалить определенные символы из имен файлов с помощью BASH

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

4b9b3361

Ответ 1

Попробуйте это (это работает в обычном старом Bourne sh):

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

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

Ответ 2

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

for file in *; do mv "${file}" "${file/000/}"; done

Ответ 3

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

Там есть прекрасная короткая программа perl под названием rename, которая по умолчанию установлена ​​на некоторых системах (у других есть менее полезная программа переименования). Он позволяет использовать perl regex для вашего переименования, например:

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

Ответ 4

#!/bin/bash
ls | while read name; do
  echo mv $name ${name/$1//}
done