linux - 在单个命令中使用前缀重命名文件夹中的所有文件

标签 linux unix rename

重命名文件夹中的所有文件,前缀为"Unix_"

假设一个文件夹有两个文件

a.txt
b.pdf

那么它们都应该从一个命令重命名为

Unix_a.txt
Unix_b.pdf

最佳答案

如果您的文件名包含 no whitepace 并且您没有任何子目录,则可以使用简单的 for 循环:

$ for FILENAME in *; do mv $FILENAME Unix_$FILENAME; done 

否则使用方便的 rename 命令(它是一个 perl 脚本) - 尽管它可能并非在每个 Unix 上都可用(例如 OS X 不附带 rename )。

debian-administration.org 上的简短概述:

如果您的文件名包含空格,则使用 find 会更容易,在 Linux 上以下应该可以工作:

$ find . -type f -name '*' -printf "echo mv '%h/%f' '%h/Unix_%f\n'" | sh

不幸的是,在 BSD 系统上,没有 -printf 选项。但是GNU findutils应该是可安装的(例如在带有 brew install findutils 的 Mac OS X 上)。

$ gfind . -type f -name '*' -printf "mv \"%h/%f\" \"%h/Unix_%f\"\n" | sh

关于linux - 在单个命令中使用前缀重命名文件夹中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6329505/

相关文章:

linux - 横向打印纵向数据

c - 这个 setjmp/longjmp 上下文中的自动变量是什么?

file - 你如何删除unix sh中以 "string"开头的所有行?

batch-file - 重命名文件夹时拒绝访问

linux - 在 .cshrc 中设置 PATH 无效

python - 从 Python 字典生成 HTML 表格

shell - 重命名命令默认情况下不会覆盖,如何强制覆盖?

mysql - 为什么重命名数据库需要复制数据?

linux - 遍历文件夹和子文件夹中的文件名

c++ - 发送USR2信号后忽略信号处理程序