我正在尝试创建一个小的Bash脚本来从文件名中删除连字符.例如,我想重命名:
CropDamageVO-041412.mpg
至
CropDamageVO041412.mpg
我是Bash的新手,所以要温柔:]谢谢你的帮助
试试这个:
for file in $(find dirWithDashedFiles -type f -iname '*-*'); do
mv $file ${file//-/}
done
Run Code Online (Sandbox Code Playgroud)
假设您的目录名称中没有破折号.这会打破这个.
该${varname//regex/replacementText}语法解释这里.只需搜索子串替换.
此外,如果您的目录或文件名中包含空格,则会中断.如果文件名中有空格,则应使用:
for file in *-*; do
mv $file "${file//-/}"
done
Run Code Online (Sandbox Code Playgroud)
这样做的缺点是必须在包含要更改的文件的每个目录中运行,但是,就像我说的那样,它更加强大.
FN=CropDamageVO-041412.mpg
mv $FN `echo $FN | sed -e 's/-//g'`
Run Code Online (Sandbox Code Playgroud)
反引号 (``) 告诉 bash 运行其中的命令并在表达式中使用该命令的输出。sed 部分应用正则表达式来删除文件名中的连字符。
或者对当前目录中匹配特定模式的所有文件执行此操作:
for i in *VO-*.mpg
do
mv $i `echo $i | sed -e 's/-//g'`
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6670 次 |
| 最近记录: |