我有一些文件,有些莫名其妙地,但由于情有可原的情况下,收到附加到文件名前面的“。”(句点和空格)。Unix天才 - 删除“。”从一堆文件名?
我想写一个bash脚本来删除这个,但我真的不知道从哪里开始。
我可以
find dir -name ".*"
检索所有受影响的文件的列表,但是,这就是所有我知道的。谁能帮我吗?
我有一些文件,有些莫名其妙地,但由于情有可原的情况下,收到附加到文件名前面的“。”(句点和空格)。Unix天才 - 删除“。”从一堆文件名?
我想写一个bash脚本来删除这个,但我真的不知道从哪里开始。
我可以
find dir -name ".*"
检索所有受影响的文件的列表,但是,这就是所有我知道的。谁能帮我吗?
find dir -type f -regex ".*/[.] .*" -exec rename ". " "" {} \;
查找目录内的所有内容,其中名正则表达式匹配".*/[.] .*"
- “什么,斜线,点,空间,任何东西”
对于每一个找到的文件,执行:“。‘rename ". " "" filename
其变为’ “在文件中被称为filename
我无法获得此命令的工作。我试着运行“find dir -name”[。]。*“并且什么也没有发现,而使用”。*“打开了所有受影响的文件,然后在插入命令的其余部分的同时尝试了它,在(eval 1)第1行,在“。”附近给了我一个重复的语法错误,你能否解释一下重命名正在做什么?我正在努力学习 – cemulate 2011-03-06 00:55:38
想了解更多关于'rename' type'man rename '在终端中,这是'rename'手册(因此是'man'),通常是第一个查找命令信息的地方。 – 2011-03-06 00:59:01
使用这种新的查找形式。 – Erik 2011-03-06 00:59:35
如果你有rename
Perl脚本版本:
find dir -name '. *' -exec rename 's/^. //' {} \;
for fn in \.\ *; do mv -T "$fn" "${fn:2}"; done
-T
是为了安全起见,即将“$ {fn:2}”视为文件而不是目录。
(测试在bash)
这是解决这个问题的方法,尽管你不需要逃避这个问题。 '。\ *'将足以匹配问题中描述的文件;点在bash的路径名扩展中不是特殊字符。 – ghoti 2016-02-02 13:20:48
现在,你知道,在的Linux/Unix是完全正常有文件“”在他们面前,对吗?这意味着他们“隐藏”。例如,如果您在家庭(〜)目录中输入“ls -a”,则会看到大量隐藏的目录等。 – 2011-03-06 00:48:15
对,它们不应该是:P – cemulate 2011-03-06 00:50:18
如果你做了很多这样的事情,我在很多年前写了一个非常Perl的程序,可以让你使用替换进行批量重命名:http://pastebin.com/BZ3MzMcn(例如:'regmv * s/foo/bar /') – Blrfl 2011-03-06 13:05:59