I'm trying to answer a school assignment question that wants me to take whatever filenames are input and check if the file ends in .old. If it doesn't to change the name to end with .old.
It needs to have a structure like what I have here but I'm getting an error with this and I'm not sure how to fix it.
#!/bin/bash
for filename in $(ls $1 | grep -v ".old$")
do
mv $filename $filename.old
done
CodePudding user response:
$ filename=file.new
$ if [ "$filename" != "${filename%.old}.old" ]; then echo mv $filename ${filename%.old}.old; else echo $filename - nothing to do; fi
mv file.new file.new.old
$ filename=file.old
$ if [ "$filename" != "${filename%.old}.old" ]; then echo mv $filename ${filename%.old}.old; else echo $filename - nothing to do; fi
$ file.old - nothing to do
CodePudding user response:
The 0 in your loop ensures that your loop is always true, so you always have to increase your counting variable by one
