linux下对文件进行批量重命名
2018-03-21 17:29
447 查看
在使用DIGITS生成LMDB格式的数据时,发现训练样本和标签的命名不一样,比如对应image000.bmp的标签为image00_L.png,所以需要删除所有的“_L”,下面是自己写的一个脚本:
设置变量时一定不要有空白,比如filename = $(echo $name | grep 'L')是不符合shell语法的
最关键的一条语句还是news=$(echo $filename | sed 's/^.*image//g' | sed 's/_L.*$/.png/g'),这里用到了sed这个管道命令,它可以将数据进行替换、删除、新增等功能,这里用到的是部分数据的查找并替换功能(以行为单位):
sed 's/要被替换的字符串/新的字符串/g'
.*是一个常用的正则表达式RE,表示任意字符(.表示任意一个字符,*表示重复字符)
grep -n 'g.*g' test.txt 得到含有g...g这个模式的行
^为行首字符,$为行尾字符
grep -n '^[a-z]' test.txt 得到开头是小写字符的那行
for name in /home/philochan/mydata/label/* do filename=$(echo $name | grep 'L') if [ "$filename" != "" ]; then news=$(echo $filename | sed 's/^.*image//g' | sed 's/_L.*$/.png/g') echo image$news echo $filename mv $filename /home/philochan/mydata/label/image$news fi done注意:
设置变量时一定不要有空白,比如filename = $(echo $name | grep 'L')是不符合shell语法的
最关键的一条语句还是news=$(echo $filename | sed 's/^.*image//g' | sed 's/_L.*$/.png/g'),这里用到了sed这个管道命令,它可以将数据进行替换、删除、新增等功能,这里用到的是部分数据的查找并替换功能(以行为单位):
sed 's/要被替换的字符串/新的字符串/g'
.*是一个常用的正则表达式RE,表示任意字符(.表示任意一个字符,*表示重复字符)
grep -n 'g.*g' test.txt 得到含有g...g这个模式的行
^为行首字符,$为行尾字符
grep -n '^[a-z]' test.txt 得到开头是小写字符的那行
相关文章推荐
- linux 批量重命名文件
- MATLAB对文件进行批量重命名
- linux 批量重命名文件
- linux 批量进行:解压缩某一类压缩文件类型的文件
- 利用Python对文件进行批量重命名——以图片文件为例
- Python脚本:对文件进行批量重命名
- linux/unix下对指定大小的文件进行批量压缩
- Linux 批量重命名文件
- linux 利用find进行批量删除CVS目录和文件的方法
- linux 使用rename命令批量重命名文件
- Linux下批量重命名文件或文件夹(rename命令)
- linux下的文件操作——批量重命名
- linux下的文件操作——批量重命名
- linux、unix下批量重命名文件
- linux 下批量重命名文件
- python对指定目录下文件进行批量重命名的方法
- linux csplit命令进行日志文件分割和重命名
- 对文件进行批量重命名
- Linux下批量重命名文件bash命令详解
- linux与windows 通过SecureCRT进行大文件传输