如何在unix中重命名多个文件 [英] how to rename multiple files in unix
问题描述
我想使用 shell 脚本重命名一个目录中的多个文件这些文件有共同的前缀:
I'd like to rename multiple files in one directory using shell scripting the files have common prefix :
Modify: 2014-09-19 16:08:35.000000000 +0300-16:08:35.000000000-OCS_dmobfw1-oam_d04_20140919_155335.csv
Modify: 2014-09-19 16:09:23.000000000 +0300-16:09:23.000000000-OCS_dmobfw1-oam_d01_20140919_155423.csv
Modify: 2014-09-19 16:09:51.000000000 +0300-16:09:51.000000000-OCS_dmobfw1-oam_d09_20140919_155451.csv
Modify: 2014-09-19 16:12:40.000000000 +0300-16:12:40.000000000-OCS_dmobfw1-oam_d07_20140919_155740.csv
Modify: 2014-09-19 16:14:48.000000000 +0300-16:14:48.000000000-OCS_dmobfw1-oam_d05_20140919_155948.csv
Modify: 2014-09-19 16:18:14.000000000 +0300-16:18:14.000000000-OCS_dmobfw1-oam_d03_20140919_160314.csv
Modify: 2014-09-19 16:18:15.000000000 +0300-16:18:15.000000000-OCS_dmobfw1-oam_d08_20140919_160315.csv
我想从所有文件中删除以下部分:
i want to remove the following part from all files :
修改:2014-09-19 16:08:35.000000000 +0300-16:08:35.000000000-
Modify: 2014-09-19 16:08:35.000000000 +0300-16:08:35.000000000-
所以输出可以是这样的:
so the output can be like this :
OCS_dmobfw1-oam_d01_20140423_223805.csvOCS_dmobfw1-oam_d01_20140423_223905.csv
OCS_dmobfw1-oam_d01_20140423_223805.csv OCS_dmobfw1-oam_d01_20140423_223905.csv
我试过:
for name in Modify* ;
do
mv "$name" $(echo $name | sed 's/Modify: 2014-09-19 16:18:14.000000000 +0300-16:18:14.000000000-/ /g') ;
done
推荐答案
例如:
for name in Modify*
do
echo mv "$name" "$(sed -E 's/Modify: .{55}//'<<<"$name")"
done
如果满意就去除回声..
remove the echo if satisfied..
<<<
是 bash 扩展,如果你没有 bash
使用
The <<<
is bash extension, if you don't have bash
use
echo mv "$name" "$(echo "$name" | sed -E 's/Modify: .{55}//')"
如果每个文件都包含OCS
,你可以使用更短的:
If every file contains the OCS
, you could use the shorter:
echo mv "$name" "$(grep -o 'OCS.*' <<<"$name")"
这篇关于如何在unix中重命名多个文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!