目录中的不同层次级别的文件包含a.txt
,b.txt
,c.txt
。
a.txt
内容
apple
orange
mango
b.txt
内容
grape
apple
mango
c.txt
内容
orange
mango
apple
grape
现在应该从所有文件中删除apple,并且需要在相同位置保存使用新名称a_1.txt
,b_1.txt
,c_1.txt
的文件,同时保持原始文件也一样地方。
因此a_1.txt
内容应为
orange
mango
b_1.txt
内容应为
grape
mango
`c_1.txt应该是
orange
mango
grape
答案 0 :(得分:0)
find
+ shell
解决方案(结合grep
+ sed
+ prename
( Perl rename
)工具):
find . -type f -name "*.txt" -exec sh -c \
'grep -q "\<apple" "$0" && (sed -i "/\<apple/d" "$0"; prename "s/\.txt$/_1$&/" "$0" )' {} \;
答案 1 :(得分:0)
希望这些命令对您的脚本有所帮助。
$ sed -i -e 's/apple//g' *.txt
$ for f in *.txt; do printf '%s\n' "${f%.txt}_1.txt"; done