perl - 批量重命名以 '-' 开头的文件?

标签 perl bash sed awk

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

mv -- -File1 File1

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

最佳答案

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

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

for f in -*; do mv "./$f" "renamed$f"; done

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

for f in -*; do mv "./$f" "${f#-}"; done

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

关于perl - 批量重命名以 '-' 开头的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810581/

相关文章:

linux - 如何使用字符串替换重命名Linux目录中的所有文件?

linux - 如何用sed用字符/字符串替换空行

python - SOAP 网络服务 : Python server and perl client

linux - Perl 编译,libgdbm 不兼容

Bash 格式的十六进制字符串

linux - Bash:无法识别 mailx 附件

bash - 使用空格而不是双引号内的空格将字符串(存储在变量中)拆分为多个单词

perl - 用于从文件中提取特定行的最快/最简洁的 bash 单行代码

perl - 如何在 Log4perl 中仅记录 INFO 级别?

perl - Y2K 合规是什么意思?