繁体   English   中英

如何在bash中修改文件名

[英]How to modify file names in bash

我有一个目录,例如: /data/work/files/

calldata_phonecalls_2131201401_01.zip calldata_phonecalls_7373201401_02.zip

在此目录中,我想创建与zipfile相对应的新文件,例如,但在BASH修改名称的一小部分:

calldata_calllog_2131201401_01.tsv calldata_calllog_7373201401_02.tsv

请注意将“电话”更改为“通话记录”

请帮助。

使用Shell参数扩展basename

for f in /data/work/files/*.zip; do
  mv "$f" "$(basename "${f/phonecalls/calllog}" .zip).tsv"
done

使用rename (perl发行版的一部分):

rename 's/phonecalls/calllog/;s/\.zip$/.tsv/' /data/work/files/*.zip

使用重命名:

使用一种版本的重命名:

rename 's/^fgh/jkl/' fgh*

使用另一个版本的重命名:

rename fgh jkl fgh*

您应该检查平台的手册页,以查看以上哪一项适用。

使用MV:

find ./ -name "*.xyz\[*\]" | while read line
do 
mv "$line" ${line%.*}.xyz
done

其他方式

ls -1 | nawk '/foo-bar-/{old=$0;gsub(/-\(.*\)/,"",$0);system("mv \""old"\" "$0)}'

完后还有:

for f in fgh*; do mv $f $(echo $f | sed 's/^fgh/jkl/g'); done

在stackoverflow和superuser页面下还有其他几个答案:

从以下链接复制/总结:

重命名Unix中的多个文件

如何使用mv命令在UNIX中重命名多个文件?

暂无
暂无

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

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