Ответ 1
Здесь вы просматриваете все файлы (и папки) в текущем каталоге:
for oldname in *
do
newname=`echo $oldname | sed -e 's/ /_/g'`
mv "$oldname" "$newname"
done
Обратите внимание, что это будет перезаписывать файлы с тем же именем. То есть, если есть два файла, у которых в противном случае идентичные имена файлов, но у каждого есть символы подчеркивания, где у другого есть пробелы. В этой ситуации тот, у которого были подчеркивания, будет перезаписан тем, у которого были пробелы. Эта более длинная версия пропускает эти случаи:
for oldname in *
do
newname=`echo $oldname | sed -e 's/ /_/g'`
if [ "$newname" = "$oldname" ]
then
continue
fi
if [ -e "$newname" ]
then
echo Skipping "$oldname", because "$newname" exists
else
mv "$oldname" "$newname"
fi
done