你好,我无法熟练使用正则表达式,一整天都在网上搜索。我有一个包含许多图片的文件夹:
- 50912000 Bicchiere.jpg
- 50913714 Sottobottiglia Bernini.jpg
我使用的是Mac OS X操作系统,但我也可以尝试Ubuntu。我想编写一个bash脚本,以删除第一个空格后的所有字符,得到以下解决方案:
- 50912000.jpg
- 50913714.jpg
适用于文件夹中的所有文件。 非常感谢您的帮助!
你好,我无法熟练使用正则表达式,一整天都在网上搜索。我有一个包含许多图片的文件夹:
我使用的是Mac OS X操作系统,但我也可以尝试Ubuntu。我想编写一个bash脚本,以删除第一个空格后的所有字符,得到以下解决方案:
适用于文件夹中的所有文件。 非常感谢您的帮助!
使用纯Bash:
f='50912000 Bicchiere.jpg'
mv "$f" "${f/ *./.}"
或者使用find
一次性修复所有文件:
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