tcsh & stat:比较文件在脚本中的修改时间
tcsh & stat: comparing files' modification times in script
我写了一个 tcsh 脚本[警告,我是 tcsh 的新手!] 检查输入文件的扩展名,如果它有读取权限,并从它的 .tex 输入文件输出一个 pdf 版本。
如果生成的 pdf 文件的修改时间比输入文件的修改时间更新 。[=12=,我的下一步是让程序 退出]
我看到我可以求助于 stat 并想到将 stat 的修改时间存储到变量中。
# is the name of the .tex file, like sample.tex
set mtime_pdf = `echo stat -c %Y :t:r.pdf`
set mtime_tex = `echo stat -C %Y `
现在我该如何比较它们? 我希望能够做类似的事情(这更像伪代码)
if ( $mtime_pdf < $mtime_tex ) then
echo "too new!"
exit 2
想法?谢谢!
你没说 stat -c %Y
指向 Linux。 stat
的问题是它的参数不是很便携。一种更便携的文件比较方法是使用 find
.
您的 set
命令应该去掉 echo
。
总而言之,这是一个演示这两种方法的示例:
#!/usr/bin/tcsh
if ( $#argv < 2 ) then
echo "Usage: [=10=] <file> <file>"
exit 2
endif
set t1=`stat -c '%Y' `
set t2=`stat -c '%Y' `
echo " is $t1 seconds old"
echo " is $t2 seconds old"
if ( $t1 < $t2 ) then
echo " is older as "
else
echo " is newer or the same age as "
endif
if { find -newer } then
echo " was modified after or at the same time as "
else
echo " was modified before as "
endif
if { find -cnewer } then
echo " was created after or at the same time as "
else
echo " was created before "
endif
我会简单地使用 tcsh 的文件查询操作符,例如:
if ( ( -M file1 ) >= ( -M file2 ) ) then
echo 'file 1 newer'
else
echo 'file 2 newer'
endif
似乎比使用 stat 更简单。
此致
我写了一个 tcsh 脚本[警告,我是 tcsh 的新手!] 检查输入文件的扩展名,如果它有读取权限,并从它的 .tex 输入文件输出一个 pdf 版本。
如果生成的 pdf 文件的修改时间比输入文件的修改时间更新 。[=12=,我的下一步是让程序 退出]
我看到我可以求助于 stat 并想到将 stat 的修改时间存储到变量中。 现在我该如何比较它们? 我希望能够做类似的事情(这更像伪代码) 想法?谢谢!# is the name of the .tex file, like sample.tex
set mtime_pdf = `echo stat -c %Y :t:r.pdf`
set mtime_tex = `echo stat -C %Y `
if ( $mtime_pdf < $mtime_tex ) then
echo "too new!"
exit 2
你没说 stat -c %Y
指向 Linux。 stat
的问题是它的参数不是很便携。一种更便携的文件比较方法是使用 find
.
您的 set
命令应该去掉 echo
。
总而言之,这是一个演示这两种方法的示例:
#!/usr/bin/tcsh
if ( $#argv < 2 ) then
echo "Usage: [=10=] <file> <file>"
exit 2
endif
set t1=`stat -c '%Y' `
set t2=`stat -c '%Y' `
echo " is $t1 seconds old"
echo " is $t2 seconds old"
if ( $t1 < $t2 ) then
echo " is older as "
else
echo " is newer or the same age as "
endif
if { find -newer } then
echo " was modified after or at the same time as "
else
echo " was modified before as "
endif
if { find -cnewer } then
echo " was created after or at the same time as "
else
echo " was created before "
endif
我会简单地使用 tcsh 的文件查询操作符,例如:
if ( ( -M file1 ) >= ( -M file2 ) ) then
echo 'file 1 newer'
else
echo 'file 2 newer'
endif
似乎比使用 stat 更简单。
此致