Bash:如何显示至少 x 分钟前更改的常规文件,但不早于 y 分钟前

  • 本文关键字:分钟 文件 常规 显示 何显示 Bash bash
  • 更新时间 :
  • 英文 :


我想编写一个脚本,该脚本将查找并显示给定目录中的常规文件,这些文件在最后 1 分钟前已更改,但不早于 10 分钟前。

我所做的不起作用。

#!/bin/bash
for i in $(find $1 -type f -mmin +1 -mmin -10)
do
echo "$i"
done

你不是在解释它是如何"不起作用"的,但如果你传入带有空格的参数,你所拥有的东西就会被破坏。

find "$1" -type f -mmin +1 -mmin -10

这应该适用于一个带有空格或其他有问题的字符的参数。

find "$@" -type f -mmin +1 -mmin -10

这允许您在命令行上传入多个路径,并带有适当的引用。

尝试mkdir "foo bar" "ick poo"并在其上运行脚本。

./myscript foo bar ick poo   # won't work

这显然接收四个字符串参数,而不是两个带有空格的目录名称。 不好。

./myscript "foo bar" "ick poo"

如果您的脚本在内部正确引用命令行参数,则此方法有效。 一个不带引号的$1变成两个参数foobar,而一个正确引号的"$1"正确地引用名为 foo bar 的目录。

贝壳引用有很多指南,但它们没有得到应有的关注。 许多介绍性文本未能正确解释这些问题,甚至包含引用不当的例子。

如果你不想在调用脚本时转义空格,你可以这样做

#!/bin/bash
dir="$@"
find "$dir" -type f -mmin +1 -mmin -10

例如输出

$ ./script test dir
test dir/test.txt

否则就做

#!/bin/bash
find "$1" -type f -mmin +1 -mmin -10

例如输出

$ ./script "test dir"
test dir/test.txt

还要确保您的权限被锁定为仅供您执行,以防止注入攻击。

相关内容

  • 没有找到相关文章

最新更新