Yanıtlar:
Arasında olanı değiştirmeniz gerekir dove donebu nasıl kullanabileceğinize bir örnektir$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 -
forVarsayılan olarak boşluklara bölündüğü için boşluklu tüm dosya isimleri kırılır ; ve yeni satırları böldüğü için yeni satırları içeren dosya adları için ls.
Bu bir ev ödevi sorusu olmadığı için ve bunu yapmanın en iyi yolunu bilmek istediğiniz için, işte bunu bulmak için yapmanın bir yolu:
find /startfolder -not -name '*.old' -exec mv {} newname_{} \;
Bu, 'old' sonekine sahip olmayan tüm dosyaları alır ve onları newname_ öneki ile yeniden adlandırır.
Döngü için gerekli değil.
for filename in $(ls $1)
do
echo $filename | grep "\.old$" > /dev/null
if [ $? != 0 ]
then
mv $1/$filename $1/$filename.old
fi
done