anu*_*ava 164
如果您有可用的重命名,请使用:
find . -name "*.t1" -exec rename 's/\.t1$/.t2/' '{}' \;
Run Code Online (Sandbox Code Playgroud)
如果无法重命名,请使用:
find . -name "*.t1" -exec bash -c 'mv "$1" "${1%.t1}".t2' - '{}' \;
Run Code Online (Sandbox Code Playgroud)
我会在 bash 中这样做:
for i in $(ls *.t1);
do
mv "$i" "${i%.t1}.t2"
done
Run Code Online (Sandbox Code Playgroud)
编辑:我的错误:它不是递归的,这是我递归更改文件名的方法:
for i in $(find `pwd` -name "*.t1");
do
mv "$i" "${i%.t1}.t2"
done
Run Code Online (Sandbox Code Playgroud)
如果您的版本bash支持该globstar选项(版本4或更高版本):
shopt -s globstar
for f in **/*.t1; do
mv "$f" "${f%.t1}.t2"
done
Run Code Online (Sandbox Code Playgroud)
或者您可以简单地安装mmv命令并执行:
mmv '*.t1' '#1.t2'
Run Code Online (Sandbox Code Playgroud)
这#1是第一个glob部分,即*in *.t1.
或者在纯粹的bash中,一种简单的方法是:
for f in *.t1; do
mv "$f" "${i%.t1}.t2"
done
Run Code Online (Sandbox Code Playgroud)
(即:for可以在没有外部命令帮助的情况下列出文件,例如ls或find)
HTH
在全新安装的 debian 14 上,上述解决方案均不适合我。这应该适用于任何 Posix/MacOS
find ./ -depth -name "*.t1" -exec sh -c 'mv "$1" "${1%.t1}.t2"' _ {} \;
Run Code Online (Sandbox Code Playgroud)
所有学分:https : //askubuntu.com/questions/35922/how-do-i-change-extension-of-multiple-files-recursively-from-the-command-line
| 归档时间: |
|
| 查看次数: |
44608 次 |
| 最近记录: |