-1

Используйте цикл for для просмотра имен файлов в каталоге. В этой версии только циклически перебираются имена файлов, которые не имеют расширения .old

Внутри цикла переименуйте файл в новое имя.

4 ответа4

0

Предполагая доступ к bash 4+ (проверьте с помощью bash --version), это можно сделать с помощью двух строк:

shopt -s extglob
for f in !(*.old); do mv -- "$f" new_"$f"; done
-1

Вам нужно заменить то, что между 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 -
-1

Поскольку это не домашнее задание, и вы просто хотите узнать, как это сделать наилучшим образом, вот способ сделать это с помощью команды find:

find /startfolder -not -name '*.old' -exec mv {} newname_{} \;

Это позволит получить все файлы без суффикса «old» и переименовать их с префиксом newname_

Нет для цикла требуется.

-1
for filename in $(ls $1)
do
        echo $filename | grep "\.old$" > /dev/null
                if [ $? != 0 ]
                then
                        mv $1/$filename $1/$filename.old
                fi
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .