微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Unix中编辑/replace多个文件中的内容而不打开它

我在Unix目录下有多个文件文件名称如下。

EnvName.Fullbkp.schema_121212_1212_Part1.expd EnvName.Fullbkp.schema_121212_1212_Part2.expd EnvName.Fullbkp.schema_121212_1212_Part3.expd

在上面的每一个文件中都有一条如下所示的通用行。 例如

EnvName.Fullbkp.schema_121212_1212_Part1.expd

有以下数据

Log=EnvName.Fullbkp.schema_10022012_0630_Part1.log file=EnvName.Fullbkp.schema_10022012_0630_Part1.lst EnvName.Fullbkp.schema_121212_1212_Part2.expd

有以下数据

基于文档文本string重命名多个文件

使用rsync在复制过程中使用–files-from重命名文件

为什么Windows中的Perl不能用元音变音重命名文件

PHP重命名()的怪异行为

使用shell脚本批量重命名

Log=EnvName.Fullbkp.schema_10022012_0630_Part2.log file=EnvName.Fullbkp.schema_10022012_0630_Part2.lst

我想用22052013_1000replaceEnvName.Fullbkp.schema_121212_1212_Part * .expd文件中的10022012_0630,而无需打开这些文件。 所有EnvName.Fullbkp.schema_121212_1212_Part * .expdp文件一个目录中一次发生更改

批量重命名DropBox冲突文件

批处理脚本:从多个文件名中删除包含特殊字符的特定/有针对性的词语

batch file中的error handling

如何通过使用Python访问和更改Windows 7文件资源pipe理器中JPEG图像的标签描述属性

批量重命名文件和覆盖,如果文件名已经存在(Windows)

假设你的意思是你不想手动打开文件

sed -i 's/10022012_0630/22052013_1000/' filename*.log

更新:由于“-i”开关在AIX上不可用,但假设您有ksh(或兼容的shell):

mkdir modified for file in filename*.log; do sed 's/10022012_0630/22052013_1000/' "$file" > modified/"$file" done

现在修改文件将在modified目录中。

在AIX上建议sed -i是一种极端的乐观主义者。

安装perl的可能性更大一些。

perl -pi -e 's/10022012_0630/22052013_1000/' EnvName.Fullbkp.schema_121212_1212_Part*.expd

如果没有perl,那么你只需要像一个真正的人那样做:

for i in EnvName.Fullbkp.schema_121212_1212_Part*.expd do ed -s "$i" <<'__EOF' 1,$s/10022012_0630/22052013_1000/g wq __EOF done

在尝试这些之前准备好一些备份。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐