web-dev-qa-db-ja.com

Linuxでファイル名から空白を削除する

次のようなさまざまなフォルダーに数百のjpgファイルがあります。

  • 304775 105_01.jpg
  • 304775 105_03.jpg
  • 304775 105_05.jpg
  • 304775 105_07.jpg
  • 304775 105_02.jpg
  • 304775 105_04.jpg
  • 304775 105_06.jpg

基本的に、スペースを削除する必要があります。スペースをアンダースコアに変更するコマンドはすでに知っています。

$ rename "s/ /_/g" *

ただし、この場合、アンダースコアは必要ありません。スペースを削除するだけです。私は以下を試しましたが、うまくいきませんでした:

$ rename "s/ //g" *

任意の助けをいただければ幸いです。

26
Sam Timalsina

次のようなことができます:

IFS="\n"
for file in *.jpg;
do
    mv "$file" "${file//[[:space:]]}"
done
23
Blake

以下が実際にスペースである場合に機能します。

$ rename "s/ //g" *

試してみる

$ rename "s/\s+//g" *

\sは、[ \t\r\n]のセットに属する空白文字です。

37