可以grep和修改/触摸文件修改日期?

时间:2012-12-13 15:18:17

标签: linux

我使用以下命令查找许多文件中字符串的所有实例,并删除找到它们的行。

find . -maxdepth 1 -xdev -type f -exec sed -i '/teststring/Id' {} \;

我不想更改文件的修改日期,因为这会影响文件在不相关的应用程序中显示的顺序。所以我想我可以在执行sed之前获取日期,然后触摸该文件并替换命令末尾的旧修改日期。如果可能的话,我想在一个与上面集成的命令中拥有它。

2 个答案:

答案 0 :(得分:2)

尝试以下命令:

find . -maxdepth 1 -xdev -type f -exec sed -i.bak '/teststring/Id' {} \; -exec touch -r {}.bak {} \; -exec rm {}.bak \;

find命令为找到的每个文件执行三个步骤:

  1. sed更改文件并创建原始文件的备份(扩展名为.bak
  2. touch将新文件的时间戳设置为与备份
  3. 相同
  4. 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

完成