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 次 |
最近记录: |