Xsanのフォルダにある400以上のファイルを毎日調べて、ファイルのファイル名のスペースをアンダースコアに置き換える必要がある状況があります。
たとえば、ターミナルを介して実行できるスクリプトを手元に持っている人はいますか?
これで、現在のディレクトリ内のすべてのファイル(およびフォルダ)がループします。
for oldname in *
do
newname=`echo $oldname | sed -e 's/ /_/g'`
mv "$oldname" "$newname"
done
これにより、同じ名前のファイルが上書きされることに注意してください。つまり、ファイル名が同じであるファイルが2つあるが、一方にはアンダースコアがあり、もう一方にはスペースがある場合です。その場合、アンダースコアのあるものはスペースのあるもので上書きされます。この長いバージョンでは、代わりにこれらのケースをスキップします。
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