bash-скриптинг - выборочно обрабатывать имена файлов с пробелами - PullRequest
0 голосов
/ 07 сентября 2010

У меня есть каталог с именами файлов: "a b c.jpg", "d e f 0.jpg", "g h i.jpg"

Мне нужен скрипт, чтобы все файлы, заканчивающиеся на " 0.jpg", стали " _0.jpg"

Итак, в приведенном выше примере второй файл должен называться "d e f_0.jpg"

Ответы [ 3 ]

5 голосов
/ 07 сентября 2010

Я думаю, что ваш вопрос должен прочитать, что вы хотите, чтобы файлы, заканчивающиеся на «0.jpg», стали «_0.jpg» (обратите внимание на пробел в первых кавычках). Это имеет смысл с вашим примером.

for i in *\ 0.jpg ; do
    mv -- "$i" "${i/ 0.jpg/_0.jpg}"
done

То есть для каждого файла, соответствующего шаблону "* 0.jpg", переименуйте его, заменив "0.jpg" на "_0.jpg"

Редактировать: Для дополнительной безопасности рассмотрите возможность использования -n (без сглаживания) или -i (интерактивно) в качестве опции для mv(1).

1 голос
/ 07 сентября 2010

Инструмент rename может быть тем, что вам нужно.

0 голосов
/ 07 сентября 2010
ls -1 | grep .jpg | awk -F "." '{print $1 "_0." $2}'
...