如何重命名文件夹中的所有文件,删除linux中的空格字符后的一切?

你好,我不能正常使用正常的expression式,它是整天在互联网上search。 我有一个很多图片的文件夹:

  • 50912000 Bicchiere.jpg
  • 50913714 Sottobottiglia Bernini.jpg

我正在使用Mac OS X,但是我也可以尝试在Ubuntu上,我想为bash创build一个脚本,在第一个空间之后删除所有的字符,以获得如下解决scheme:

  • 50912000.jpg
  • 50913714.jpg

对于文件夹中的所有文件。 任何帮助表示赞赏。 问候

使用纯粹的BASH:

f='50912000 Bicchiere.jpg' mv "$f" "${f/ *./.}" 

或使用查找一次修复所有的文件:

 find . -type f -name "* *" -exec bash -c 'f="$1"; s="${f/_ / }"; mv -- "$f" "${s/ *./.}"' _ '{}' \; 

使用sed,

 sed 's/ .*\./\./g' 

注意之前的空间.*

你可以使用find和一个小脚本的组合。

 prompt> find . -name "* *" -exec move_it {} \; mv "./50912000 Bicchiere.jpg" ./50912000 mv "./50913714 Sottobottiglia Bernini.jpg" ./50913714 prompt> cat move_it #!/bin/sh dst=`echo $1 | cut -c 1-10` # remove the echo in the line below to actually rename the file echo mv '"'$1'"' $dst 

随着重命名

 rename 's/.*\s+//' *files