web-dev-qa-db-ja.com

フォルダ内のファイル名からスペースを削除する

Xsanのフォルダにある400以上のファイルを毎日調べて、ファイルのファイル名のスペースをアンダースコアに置き換える必要がある状況があります。

たとえば、ターミナルを介して実行できるスクリプトを手元に持っている人はいますか?

17
Ronny vdb

これで、現在のディレクトリ内のすべてのファイル(およびフォルダ)がループします。

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
42
Ilari Scheinin