使用bash递归改变文件的扩展名
当需要大量改变文件扩展名的时候会非常有用,这情况可能很少遇到。但是在调试测试的时候就非常有用。
在本文我们将说明如何使用bash的find参数-exec,mv,rename命令递归改变文件的扩展名。-exec顾名思义就是要执行命令的意思。
使用find -exec与mv命令递归改变文件扩展名
find . -name "*.t1" -exec bash -c 'mv "$1" "${1%.t1}".t2' - '{}' +
比如:我们要查找src目录下所有.spec.ts
文件并更改扩展名
find ./src -name "*.spec.ts" -type f bash -c 'mv "$1" "${1%.t1}".t2' - '{}' +
./src/users/users.controller.spec.ts./src/auth/auth.service.spec.ts
./src/auth/auth.controller.spec.ts
./src/roles/roles.controller.spec.ts
./src/roles/roles.service.spec.ts
./src/shared/prisma.service.spec.ts
./src/app.controller.spec.ts
./src/permissions/permissions.controller.spec.ts
./src/permissions/permissions.service.spec.ts
- '{}'是源文件名,包行相对与查找位置目录./src/auth/auth.service.spec.ts,之所以加上单引号是因为shell会解释{},正常情况下{}在shell中意味着创建一个数组array
- 使用+形式调用会返回非零值作为退出状态,即find返回非零退出状态。 如果发现遇到错误立即退出
- bash -c 执行指定的命令
- 'mv "$1" "${1%.t1}".t2' 这是一个mv命令,它接受两个参数第一个参数是$1,即传递来的- '{}'
- ${1%.t1}将$1解构,路径部分赋值给1%,这里1%就是./src/auth/auth.service
使用find -exec与rename命令递归改变文件扩展名
安装rename在ubuntu和debian
sudo apt install rename
安装rename在Centos和RedHat
find . -name '*.t1' -exec rename .t1 .t2 {} +
find . -name "*.t1" -exec rename 's/\.t1$/.t2/' '{}' +
结论
废话不想写了,直接ctrl+c/v。你看懂就可以
以上是 使用bash递归改变文件的扩展名 的全部内容, 来源链接: utcz.com/z/507668.html