You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本执行find命令报No such file or directory错误的解决办法

问题原因

  • 核心错误是自定义变量占用了系统内置环境变量PATH:PATH是Linux系统预设的环境变量,存储了所有可执行命令的搜索路径,将用户输入的路径赋值给PATH后,系统的命令搜索路径被覆盖为输入的/var/log,无法找到存放在系统默认路径下的find命令,因此抛出“不存在该文件或目录”的错误。
  • 次要错误是命令替换的引号使用不当:$("find $PATH -type f -size +1M")中给find命令额外套了双引号,会将整段字符串识别为单个可执行文件名,就算PATH变量正常也会执行失败。

修复方案

  1. 修改自定义变量名,替换为非系统保留的名称(例如TARGET_PATH、SCAN_PATH),避免覆盖系统环境变量。
  2. 移除命令替换中find外侧的多余双引号,不需要用引号包裹整个find命令。
  3. 可选优化:直接执行find命令输出结果即可,不需要额外套echo和命令替换;给变量加上双引号,兼容路径中包含空格的场景。

修复后完整代码

#!/bin/bash
DISK_USAGE=$(df -h /dev/xvda1 | awk '{gsub("%","",$5);print $5}' | tail -1)

THRESHOLD=80

if [ $DISK_USAGE -ge $THRESHOLD ]
then
    read -p "Enter the path for log files: " TARGET_PATH
    echo "Below is the list of large log files which are taking space:"
    find "$TARGET_PATH" -type f -size +1M
fi

内容的提问来源于stack exchange,提问作者Ayush Kapil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:12:01