[英]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页面下还有其他几个答案:
从以下链接复制/总结:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.