我正在使用以下内容在多个文件中查找字符串的所有实例并删除找到它们的行。
find . -maxdepth 1 -xdev -type f -exec sed -i '/teststring/Id' {} \;
我不想更改文件的修改日期,因为这会影响文件在不相关应用程序中的显示顺序。所以我想我可以在执行 sed 之前获取日期,然后触摸文件并在命令末尾替换旧的修改日期。如果可能的话,我希望将所有这些都集成到一个命令中。
我正在使用以下内容在多个文件中查找字符串的所有实例并删除找到它们的行。
find . -maxdepth 1 -xdev -type f -exec sed -i '/teststring/Id' {} \;
我不想更改文件的修改日期,因为这会影响文件在不相关应用程序中的显示顺序。所以我想我可以在执行 sed 之前获取日期,然后触摸文件并在命令末尾替换旧的修改日期。如果可能的话,我希望将所有这些都集成到一个命令中。
尝试以下命令:
find . -maxdepth 1 -xdev -type f -exec sed -i.bak '/teststring/Id' {} \; -exec touch -r {}.bak {} \; -exec rm {}.bak \;
该find
命令对找到的每个文件执行三个步骤:
sed
更改文件并创建原始文件的备份(带有.bak
扩展名)touch
将新文件的时间戳设置为与备份相同rm
删除备份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
完毕