【问题标题】:Bash Script: find command getting stuckBash 脚本:查找命令卡住
【发布时间】:2014-01-31 00:53:47
【问题描述】:

我目前正在编写一个 bash 脚本,其中的一部分需要能够查看一堆目录层次结构并吐出两个文本文件,每个文件分别包含目录列表和所有文件,在给定目录。

据我了解,以下应该可以解决问题:

find $directory -type d >> alldirs.txt

其中目录被分配了不同的目录路径名,因为我应该检查其中的一些。

我有一个 for 循环遍历我的目录列表并使用上述函数来完成我的任务。上面的命令到达某个点然后卡住了。当我调查这个问题时,它似乎会进入一个空的目录,然后卡住。或者它实际上会开始寻找一开始不存在的目录,然后它就会卡住。有什么想法吗?

我有什么遗漏吗?或者我是否理解它是如何工作不正确的?有更好的选择吗?

【问题讨论】:

  • 由于它“陷入循环”,我认为发布实际的循环代码会有很大帮助。
  • 我更新了我的问题。我检查了我的循环,它不是循环本身,而是特别是 find 命令。我在单个目录层次结构(在 for 循环之外)上进行了尝试,但遇到了同样的问题
  • 是否有东西挂载在卡住的目录中?像 FUSE fs 或网络目录?
  • 我不知道。虽然我正在查看一个以只读方式安装的文件系统的目录之一
  • 在特定情况下不要认为这是您的问题,但您应该引用"$directory" 以防止将来出现问题。

标签: bash


【解决方案1】:

你还没有说 $directory 是一个名字。没有它,bash 会报错“find: $directory: No such file or directory”

例如:

find . -iname $directory -type d >> alldirs.txt

注意:以上将在当前目录开始搜索,由“.”指定

将其更改为您希望的任何目录,例如/home/mys.celeste

【讨论】:

  • 我试过了,但并没有什么不同。仍然做同样的事情。
  • 把整个脚本贴出来吧:)
【解决方案2】:

我有类似的问题:find / -name blahblah 卡在某个地方 调试时,我尝试在所有根目录中搜索/tmp, /var, /sbin, /user 等。发现卡在/media上。 在/media 我安装了RHEL repo。所以afterunmount - find继续正常工作。

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 2016-10-07
    • 1970-01-01
    • 2020-05-12
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多