我使用以下命令查找许多文件中字符串的所有实例,并删除找到它们的行。
find . -maxdepth 1 -xdev -type f -exec sed -i '/teststring/Id' {} \;
我不想更改文件的修改日期,因为这会影响文件在不相关的应用程序中显示的顺序。所以我想我可以在执行sed之前获取日期,然后触摸该文件并替换命令末尾的旧修改日期。如果可能的话,我想在一个与上面集成的命令中拥有它。
答案 0 :(得分:2)
尝试以下命令:
find . -maxdepth 1 -xdev -type f -exec sed -i.bak '/teststring/Id' {} \; -exec touch -r {}.bak {} \; -exec rm {}.bak \;
find
命令为找到的每个文件执行三个步骤:
sed
更改文件并创建原始文件的备份(扩展名为.bak
)touch
将新文件的时间戳设置为与备份rm
删除备份答案 1 :(得分:1)
for file in $(find . -maxdepth 1 -xdev -type f )
do
mod_time=$(stat --format=%y $file)
perl -wpl -i -e 's!teststring!!' $file
touch -d ''$mod_time'' $file
完成