4

你好我不能很好地使用正则表达式,我整天在网上搜索。我有一个包含许多图片的文件夹:

  • 50912000 Bicchiere.jpg
  • 50913714 Sottobottiglia Bernini.jpg

我使用的是 Mac OS X,但我也可以在 Ubuntu 上尝试,我想为 bash 制作一个脚本,以删除第一个空格后的所有字符,以获得这样的解决方案:

  • 50912000.jpg
  • 50913714.jpg

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

4

4 回答 4

6

使用纯 BASH:

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

或使用find一次修复所有文件:

find . -type f -name "* *" -exec bash -c 'f="$1"; s="${f/_ / }"; mv -- "$f" "${s/ *./.}"' _ '{}' \;
于 2013-10-28T18:17:06.790 回答
2

使用 sed,

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

注意前面的空格.*

于 2013-10-28T18:15:55.987 回答
0

您可以结合使用 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
于 2013-10-28T19:33:10.417 回答
0

重命名

rename 's/.*\s+//' *files
于 2013-10-28T19:39:20.727 回答