繁体   English   中英

用bash重命名文件

[英]Renaming files in bash

我的目录有很多名为“20130101_temp.txt”,“20130102_temp.txt”等的文件。

如何删除所有这些文件的名称中的“_temp”。 即,将20130101_temp.txt重命名为20130101.txt。

使用bash:

for x in *_temp.txt
do
    mv $x ${x%%_temp.txt}.txt
done

Perl(至少在Ubuntu上)还有一个名为rename的实用程序,它采用正则表达式,所以你可以用以下方法完成同样的事情:

rename -n 's/_temp\.txt$/.txt/' *_temp.txt

-n选项启动“干运行”,只显示要重命名的内容。 删除它以实际执行重命名。

使用for -loop和glob来查找文件,使用参数替换来删除_temp以进行移动:

for t in ????????_temp.txt; do 
    echo mv ${t} ${t/_temp/}
done

当您测试输出在系统上正确时,请删除echo

尝试这样的事情:

for FILENAME in *_temp.txt; do
    mv $FILENAME `echo $FILENAME | sed -e 's/_temp//'`
done

通常首先尝试将mv替换为echo来尝试它。

它不是一个bash解决方案,但由于我经常重复命名任务而懒惰地想到一个合理的bash解决方案,我只是得到pyRenamer,一个GUI工具,可以很好地完成这样的事情。 它通常可以从标准存储库安装。

dlundquists解决方案虽然运作良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM