Perl Shell脚本日期算法
这是我的高级问题 我想从配置文件中读取一个数字Perl Shell脚本日期算法,perl,shell,ksh,Perl,Shell,Ksh,这是我的高级问题 我想从配置文件中读取一个数字max\u age\u in\u secs。这个数字表示我们认为文件“旧”的秒数。阅读此配置后,我们希望搜索目录data中的所有文件,并删除在max\u age\u in\u secs秒前修改的所有文件 这必须作为一个shell脚本来完成,更具体地说是kornshell 我现在要做的是触摸一个虚拟文件,它将在几秒钟前被修改,然后使用查找及其-更新的选项,用于搜索早于此的文件 我在获取传递到touch的时间戳时遇到问题。我的unix设备上的date命令
max\u age\u in\u secs
。这个数字表示我们认为文件“旧”的秒数。阅读此配置后,我们希望搜索目录data
中的所有文件,并删除在max\u age\u in\u secs
秒前修改的所有文件
这必须作为一个shell脚本来完成,更具体地说是kornshell
我现在要做的是触摸一个虚拟文件,它将在几秒钟前被修改,然后使用查找及其-更新的
选项,用于搜索早于此的文件
我在获取传递到touch
的时间戳时遇到问题。我的unix设备上的date
命令没有--date
选项,因此我无法使用该选项
我正在查看perl-e“blah_blah_blah”
但是我需要将max_age_in_secs
变量传递给perl命令。我知道的唯一方法是创建一个新的.pl
文件并将参数传递给该文件。但理想情况下,我希望在一个korn脚本文件中具有此功能。解决方法可能是构造一个perl_命令
变量,并执行其内容,但我认为这是不安全的,容易受到注入的影响
但是我对shell脚本和perl还比较陌生,所以非常感谢您的帮助
perl -e '... $ENV{max_age_in_secs}...'
只要你愿意
export max_age_in_secs
在bash/sh/ksh中
只要你愿意
export max_age_in_secs
在bash/sh/ksh中,使用分钟代替秒。最新版本的find
具有mmin
选项。例如,以下命令删除超过一分钟的文件
find /path/ -type f -mmin +1 -exec rm {} \;
用分钟代替秒。最新版本的find
具有mmin
选项。例如,以下命令删除超过一分钟的文件
find /path/ -type f -mmin +1 -exec rm {} \;
有多种方法可以将环境变量从shell传递到一行perl命令:
- 直接的。大多数Shell(包括korn)在双引号内插入表达式
如果您不需要使用@ARGV
(如果您使用-p
或-n
开关,或者如果您的程序使用默认的
运算符,则隐式使用该选项)
- 通过Perl的
%ENV
散列
perl-e'print“VAR是$ENV{VAR}”
此机制不会干扰@ARGV
将环境变量从shell传递到一行perl命令的方法不止一种:
- 直接的。大多数Shell(包括korn)在双引号内插入表达式
如果您不需要使用@ARGV
(如果您使用-p
或-n
开关,或者如果您的程序使用默认的
运算符,则隐式使用该选项)
- 通过Perl的
%ENV
散列
perl-e'print“VAR是$ENV{VAR}”
如果服务器上的date命令没有--date,我想find命令不会有-mmin…@Jean,你说得对。我试过了,但是运气不好。谢谢dogban的建议。如果服务器上的date命令没有--date,我想find命令不会有-mmin…@Jean,你完全正确。我试过了,但是运气不好。感谢dogban的建议。如果使用%ENV
,请确保导出
外壳变量。如果使用%ENV
,请确保导出
外壳变量。
perl -e 'print "VAR is $ENV{VAR}"'