Unix天才 - 删除“。”从一堆文件名?

时间:2011-03-06 00:36:40

标签: linux bash unix sh

我有一些文件,有些莫名其妙,但由于情有可原,请在文件名的前面加上一个“。”(句号和空格)。

我想写一个bash脚本来删除它,但我真的不知道从哪里开始。

我可以通过

检索所有受影响文件的列表
find dir -name ".*"

但这就是我所知道的。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

find dir -type f -regex ".*/[.] .*" -exec rename ". " "" {} \;

在dir中找到名称与正则表达式".*/[.] .*"匹配的所有内容 - “任何东西,斜线,点,空格,任何东西”

对于每个找到的文件,执行:rename ". " "" filename,在名为filename的文件中将“。”更改为“”

答案 1 :(得分:2)

如果您的Perl脚本版本为rename

find dir -name '. *' -exec rename 's/^. //' {} \;

答案 2 :(得分:1)

for fn in \.\ *; do mv -T "$fn" "${fn:2}"; done

-T是为了安全起见,即将“$ {fn:2}”视为文件而不是目录。

(在bash中测试)