【发布时间】:2020-06-04 15:06:02
【问题描述】:
我目前正在尝试编写一个脚本,该脚本将在 X 天后使用 find 命令删除文件。
使用以下命令时,它可以正常工作并成功删除任何超过 10 天的文件。
find /path/to/file/to/delete -type f -mtime +10 -exec rm -f {} \;
但是,当尝试使用以下命令将其作为脚本参数传递时:
./delete-old-files.sh 10
find /path/to/file/to/delete -type f -mtime +$1 -exec rm -f {} \;
我遇到了这个错误:
find: invalid argument `+' to `-mtime'
我应该用某种方法包装变量以确保它不会妨碍-mtime 参数吗?
【问题讨论】:
-
你可以 '-exec rm -f {}' 而不是 '-print -delete' 并且对于未初始化的 var 你可以使用${var:-default} 像 ${1:-0}
-
$1参数到达您的find命令时的内容是什么?在find命令之前的行中插入printf '%q\n' "$1";exit,然后再次运行您的脚本。它将打印您的$1参数的实际内容。 -
您能否向我们展示有关您的脚本的更多详细信息(即显示脚本的大部分内容)。我有一种模糊的感觉,
$1不再是你所期望的那样。 -
delete-old-files(){ find . -type f -mtime +$1 -exec echo rm -f {} \; ; }为我工作,所以您需要展示整个脚本