使用 Bash 重命名文件

使用 Bash 重命名文件

我知道之前有人问过这个问题,但我在重命名目录中的以下文件时遇到了麻烦

"1.file1" 
"2.file2"
"3.file3"

"1 file1"
"2 file2"
"3 file3"

使用简单的 Bash/regex。双引号不是文件名的一部分;它们被包括在内是因为新文件名中有空格。我尝试过类似的方法,for x in [0-9]\.*; do mv但卡住了,因为我需要重复在文件名开头找到的相同数字。

答案1

继续你的方法:

for x in [0-9].*; do mv -i "$x" "${x/./ }"; done

注意这里没有正则表达式。[0-9].*文件名扩展 图案(其中.没有什么特殊之处)。${x/./ } 扩展变量并用空格x替换第一个。.

笔记:

  • [0-9]匹配一个字符。以 开头的名称12.将不匹配。
  • [0-9]取决于语言环境 ( LC_COLLATE)。我并不期待惊喜,但仍然如此。
  • 我使用-i它来防止目录中已经有所需名称的文件。

相关内容