Моя задача - написать скрипт, который ищет все файлы без расширения .old
в данной директории и переименовывает файлы в указанный формат: filename.old
. Я пробовал этот скрипт:Переименовать все файлы, найденные расширением in for loop
#!/bin/bash
for i in $(grep "\.[^old]&" $1 | ls)
do
mv "$1/$i" "$1/$i.old"
done
но он дает неправильный выход.
- Данные файлы были в моем каталоге:
f1, f2.old, f3, f4.old
. - Ожидаемый результат:
f1.old, f2.old, f3.old, f4.old
. - Мой выход (1-й запуск):
f1.old, f2.old.old, f3.old, f4.old.old
. Каждый раз, когда я запускаю скрипт, он продолжает добавлять расширение.old
, поэтому он становится примерно таким: - Мой выход (2-й запуск):
f1.old.old, f2.old.old.old, f3.old.old, f4.old.old.old
.
Как это можно улучшить?
спасибо. Ваше решение работает отлично. Я использовал ваш скрипт с одним изменением, заменил. с $ 1. – Anthony