[英]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.