在一个目录中有这些文件和更多:
每个file1都应该用newfile替换:
我试过了:
for f in $(ls file1*); do mv $f newfile*; done
Run Code Online (Sandbox Code Playgroud)
这确实将所有带有file1 的文件替换为一个文件newfile*。
for f in $(ls file1*); do mv $f ${f/$f/"newfile"}; done
Run Code Online (Sandbox Code Playgroud)
这也将所有带有file1 的文件替换为一个文件newfile。或者
find . -name "file1.*" -exec sh -c 'mv I DONT KNOW' _ {} \;
Run Code Online (Sandbox Code Playgroud)
我不明白如何将文件名的一部分设置为变量并替换它。
使用 mv 执行此操作的最简单方法是什么?
如果您在 Linux 上运行,那么实现它的最简单方法是使用rename
(这是util-linux
包的一部分:
rename 'file1' 'newfile' file1*
Run Code Online (Sandbox Code Playgroud)
这将执行您所描述的操作。该rename
预计三个参数:
我迅速搜索rename
,这是第一个例子:http : //linux.icydog.net/rename.php
更新如果您rename
的系统上没有,但有bash
,那么您可以按如下方式进行批量重命名(这相当于rename
上面给出的):
for f in file1*; do mv -v "$f" "${f/file1/newfile}"; done
Run Code Online (Sandbox Code Playgroud)
尝试:
for f in ./file1.*; do
echo mv "$f" "newfile.${f##*.}"
done
Run Code Online (Sandbox Code Playgroud)
该代码仅显示 mv 命令的内容。如果这是您想要的,请删除echo
mv 命令前面的 。
归档时间: |
|
查看次数: |
11934 次 |
最近记录: |