Используйте цикл for для просмотра имен файлов в каталоге. В этой версии только циклически перебираются имена файлов, которые не имеют расширения .old
Внутри цикла переименуйте файл в новое имя.
Предполагая доступ к bash 4+ (проверьте с помощью bash --version
), это можно сделать с помощью двух строк:
shopt -s extglob
for f in !(*.old); do mv -- "$f" new_"$f"; done
Вам нужно заменить то, что между do
и done
это пример того, как вы можете использовать $f
#!/bin/sh
cd /data
list=`ls -rt`
for f in $list
do
c=`grep -c or=90 $f`
if [ "$c" -gt "0" ]; then
echo "file is $f and it has $c"
fi
done
cd -
Поскольку это не домашнее задание, и вы просто хотите узнать, как это сделать наилучшим образом, вот способ сделать это с помощью команды find:
find /startfolder -not -name '*.old' -exec mv {} newname_{} \;
Это позволит получить все файлы без суффикса «old» и переименовать их с префиксом newname_
Нет для цикла требуется.
for filename in $(ls $1)
do
echo $filename | grep "\.old$" > /dev/null
if [ $? != 0 ]
then
mv $1/$filename $1/$filename.old
fi
done