批量重命名以“-”开头的文件?

use*_*714 2 bash perl awk sed

我通常会得到一堆名称以破折号 '-' 开头的文件。当我执行任何类型的 linux 命令时,这会导致各种问题,因为 - 之后的任何内容都被解释为标志。在文件前面没有破折号字符的情况下重命名这些文件的最快方法是什么。我可以通过在文件名前面添加“--”来手动重命名每个文件。例如:“-File1”将被重命名为

mv -- -File1 File1
Run Code Online (Sandbox Code Playgroud)

但是当我必须动态重命名 100 个文件时,这并不理想。目前我必须将其导出并使用 Windows 程序,以便我可以批量重命名它们,然后将其上传回 Linux 机器。

ric*_*ici 5

引用此类文件的最简单方法是./-File1. (无论如何,只有当文件在当前目录中时才会出现问题。)也许如果你习惯了它并没有那么糟糕。

要批量重命名它们,您可以执行以下操作:

for f in -*; do mv "./$f" "renamed$f"; done
Run Code Online (Sandbox Code Playgroud)

或者,正如@shellter 在评论中所建议的那样,在 OP 中重现示例:

for f in -*; do mv "./$f" "${f#-}"; done
Run Code Online (Sandbox Code Playgroud)

注意:以上只会-从名称中删除一个。