Самый простой способ - использовать sed:
for file in code_*; do
newname=$(echo $file | sed 's/_0*/_/')
mv "$file" "$newname" #you may want to use -i to avoid accidents
done
Я обычно записываю это в одну строку.
Внешний цикл может быть любым: цикл for с глобусом, как указано выше, список файлов или даже команда поиска, переданная по конвейеру при чтении;
tail
ищет новые строки, а не смены строк:
-f, --follow[={name|descriptor}]
output appended data as the file grows;
Если вы хотите проверить это поведение самостоятельно, вы можете использовать эту команду для изменения строки вtestfile
:
while true ; do
sed "s/^.*$/$(date)/" -i testfile
sleep 1
done
Вы можете использовать цикл Wile для проверки изменений строки:
while true ; do
grep -q "^[1-9]" /proc/loadavg && echo "$message"
sleep 1
done
Я думаю, вы можете использовать tail вместе с grep для изменений, а не только для новых строк.
Я только что прочитал перед тем, как зайти сюда, что /proc/loadavg на самом деле не файл, а интерфейс ядра, и, возможно, вы правы, но даже если бы это было так, я все равно был бы в восторге.
Я надеялся на уведомление inotify, а не на загрузку только постоянных циклов, но, похоже, компьютер говорит «нет».