【问题标题】:Find while error: 'cd: command not found'查找时错误:'cd:找不到命令'
【发布时间】:2020-04-15 16:48:51
【问题描述】:

我的 find ... while 循环有问题。我尝试查找所有以 Hello 开头的文件夹。在每个 Hello 文件夹中都有一个文件夹 0,所以我想更改为该文件夹。但一定有问题:

find -maxdepth 1 -name "Hello.*" -type d|while read dir
do
  cd "$dir"/0/
  pwd 
  resourcenfolder=$(ls -d *)
  scp -oStrictHostKeyChecking=no -r ${WORKSPACE}/"$resourcenfolder" root@${TARGET_IP}:/var/navdb/hwr/MS8/
  cd ../..
done

我遇到了一个非常奇怪的错误。这是do之后的第一个cd

cd: command not found

【问题讨论】:

  • 好的,我添加了 maxdepth 1 。所以至少这应该有效。但其他一切都正确吗?
  • 这很奇怪。请问include the complete error messages好吗?
  • 使用"Hello*"。如果Hello 后面总是跟.,则只使用"Hello.*"
  • 你应该添加-mindepth 1,否则第一个条目是.另外使用cd -而不是cd ../..

标签: bash shell find


【解决方案1】:

我建议使用 Bash for 循环来简化 GLOBing,并使用子 shell 来简化 change-dir 活动。试试这个:

for dir in Hello*; do
   (cd "$dir"/0/; for resource in *; do
      scp -oStrictHostKeyChecking=no -r ${WORKSPACE}/"$resource" root@${TARGET_IP}:/var/navdb/hwr/MS8/
    done)
done

警告:TARGET_IP 值似乎是合理的。但我担心 WORKSPACE 变量没有多大意义......

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 1970-01-01
    • 2016-03-24
    • 2016-07-12
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多