use*_*005 1 linux date find csh
我想运行以下命令。
找 。-mtime -60s
当我这样做时,我会得到这个输出:
CLIENT% echo `date +%s`-1308741881 | bc
5152
CLIENT% find . -mtime -`echo `date +%s`-1308741881 | bc`s
-1308741881: Command not found.
find: -mtime: -date: illegal time value
CLIENT%
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
问题是 ` 标记用于表示应该在您的命令中替换输出的命令......所以您的命令实际上是三个命令:
命令 #1 不输出任何内容,命令 #2 导致“找不到命令”错误,因为-1308741881不是有效命令,然后也不输出任何内容。
然后最后第三个命令运行,带有这些替换,看起来像这样:
find . -mtime -date
Run Code Online (Sandbox Code Playgroud)
由于“-date”不是有效时间,它也抱怨说“非法时间值”
潜在的问题是您试图使用嵌套的 `` 标记,shell 将其解释为两个单独的命令。
表达您想要的更好的方法是这样的(对于 bash):
find . -mtime -$(echo $(date +%s-1308741881) | bc)s
Run Code Online (Sandbox Code Playgroud)
而对于 csh:
set now=`date +%s-1308741881`; set date=`echo $now | bc`s; find . -mtime -$date
Run Code Online (Sandbox Code Playgroud)
并且可能用于其他外壳(未经测试):
NOW=`date +%s-1308741881`; DATE=`echo $NOW | bc`; find . -mtime -${DATE}s
Run Code Online (Sandbox Code Playgroud)
PS 我不认为这符合您的期望……您的 date 命令返回了几秒钟,但是 -mtime 需要几天作为输入。我猜你可能想相应地调整你的日期命令。
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |