最近在整理文件时需要这样一个工具,一个目录下有许多子目录和子文件,因为文件删除的原因,父目录的修改时间和子目录/文件的修改时间有较大出入,不便于统计,因而需要把父目录的修改时间修改为子项目最大修改时间
一点相关知识
stat命令
stat命令可以查看文件(夹)的信息,这里我们关注三个时间
Access: 最近一次访问文件的时间
Modify: 最近一次修改文件的时间
Change: 最近一次对文件属性改变的时间
touch命令
touch命令更改文件的访问和修改时间
其中 touch -r A B 命令,可以把B的访问和修改时间改为和A一致,即我们要使用的场景
编写脚本
基本原理是递归操作每一个目录,对目录下的子文件取修改时间最近的一个,并根据其时间修改目录的时间
#!/bin/bash
if [ ! -d "$1" ] ; then
echo 'ERROR: Parameter missing. specify the folder!'
exit
fi
function read_dir(){
for file in `ls $1`
do
if [ -d $1"/"$file ]
then
read_dir $1"/"$file
fi
done
file_ref=$(find $1 -mindepth 1 -maxdepth 1 -printf '%T+=%p\n' | sort |tail -n 1 | cut -d= -f2-)
echo $1 $file_ref
touch -r $file_ref $1
}
read_dir $1
vim ../modify-time.sh
...
./modify-time.sh sites
参考链接
本文由 ukuq 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jan 22, 2023 at 03:14 pm