目录中存在不同层级的文件,例如a.txt
、b.txt
、c.txt
。
a.txt
内容为
apple
orange
mango
b.txt
内容为
grape
apple
mango
c.txt
内容为
orange
mango
apple
grape
现在苹果应该从所有文件中删除,并且需要使用新名称 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
最佳答案
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" )' {} \;
关于linux - 如何递归地查看目录中的文件,删除特定模式并将其写入同一层次结构中的新文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47466604/