van*_*van 19 linux bash rename file-rename
我想批目录中,这样前面的数字和连字符从文件名剥离重命名多个文件.
Old file name: 2904495-XXX_01_xxxx_20130730235001_00000000.NEW
New file name: XXX_01_xxxx_20130730235001_00000000.NEW
Run Code Online (Sandbox Code Playgroud)
如何使用linux命令执行此操作?
fed*_*qui 40
这应该是:
rename 's/^[0-9]*-//;' *
Run Code Online (Sandbox Code Playgroud)
它从块的开头[0-9](即数字)开始多次,然后是连字符-并从文件名中删除它.
如果rename不在您的机器中,您可以使用循环并mv:
mv "$f" "${f#[0-9]*-}"
Run Code Online (Sandbox Code Playgroud)
$ ls
23-aa hello aaa23-aa
$ rename 's/^[0-9]*-//;' *
$ ls
aa hello aaa23-aa
Run Code Online (Sandbox Code Playgroud)
要么:
$ ls
23-a aa23-a hello
$ for f in *;
> do
> mv "$f" "${f#[0-9]*-}"
> done
$ ls
a aa23-a hello
Run Code Online (Sandbox Code Playgroud)
小智 19
我认为如果你执行以下命令,这个命令会更好:
ls * | sed -e 'p;s/old-name/new-name/' | xargs -n2 mv
Run Code Online (Sandbox Code Playgroud)
这里
ls* - 列出curent文件夹中的文件
sed -e - 执行表达式
p; - 打印旧文件名
s/old-name/new-name / - 生成新文件名
xargs -n2 - 处理mv
mv的 两个参数 - 获取两个参数并执行移动操作
建议: 在执行mv之前,验证你所做的是你想用echo实现的.
ls * | sed -e 'p;s/old-name/new-name/' | xargs -n2 echo
Run Code Online (Sandbox Code Playgroud)
以下示例重命名
SCCF099_FG.gz5329223404623884757.tmp 到
SCCF099_FG.gz
ls *tmp | sed -e 'p;s/\([0-9]\)\+\.tmp/ /g' | xargs -n2 echo
ls *tmp | sed -e 'p;s/\([0-9]\)\+\.tmp/ /g' | xargs -n2 mv
Run Code Online (Sandbox Code Playgroud)
如果第一个数字总是相同的长度:
for F in *new ; do
mv $F ${F:8}
done
Run Code Online (Sandbox Code Playgroud)
在${parameter:number}做了子扩张-需要字符串开始在第8字符.
在扩展中还有许多其他字符串编辑可用于处理其他情况.
| 归档时间: |
|
| 查看次数: |
46512 次 |
| 最近记录: |