【发布时间】:2014-09-25 00:27:05
【问题描述】:
我想使用 shell 脚本重命名一个目录中的多个文件 这些文件有共同的前缀:
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
我想从所有文件中删除以下部分:
修改:2014-09-19 16:08:35.000000000 +0300-16:08:35.000000000-
所以输出可以是这样的:
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
【问题讨论】:
-
您没有告诉我们您的方法有什么问题,但是由于您的文件名包含空格(不要这样做),您会遇到麻烦。使用
find可能是最安全的选择。 -
你能告诉我更多关于如何在我的情况下使用 find 吗?