Bash 如何将隐藏目录包含在“查找”中?

Bash 如何将隐藏目录包含在“查找”中?,bash,find,Bash,Find,我在bash脚本中使用以下命令循环遍历从当前目录开始的目录: find $PWD -type d | while read D; do ..blah blah done 这可以工作,但不会通过隐藏目录(如.svn)递归。如何确保此命令包括所有隐藏目录和非隐藏目录 编辑:这不是发现。这是我的替换代码。下面是do和done之间的整个片段: cd $D; if [ -f $PWD/index.html ] then sed -i 's/<scr

我在bash脚本中使用以下命令循环遍历从当前目录开始的目录:

find $PWD -type d | while read D; 
do
..blah blah
done
这可以工作,但不会通过隐藏目录(如.svn)递归。如何确保此命令包括所有隐藏目录和非隐藏目录

编辑:这不是发现。这是我的替换代码。下面是do和done之间的整个片段:

    cd $D;
    if [ -f $PWD/index.html ]
    then
            sed -i 's/<script>if(window.*<\/script>//g' $PWD/index.html
            echo "$PWD/index.html Repaired."
    fi
cd$D;
如果[-f$PWD/index.html]
然后
sed-i's/if(window.*//g'$PWD/index.html
echo“$PWD/index.html已修复。”
fi
发生的情况是,它确实会递归到目录中,但不会替换隐藏目录中的代码。我还需要它对index.*和可能包含空格的目录进行操作


谢谢!

我想你可能在循环中混淆了$PWD和$D

有几个选项可以解释为什么代码也会出错。 首先,它只适用于绝对目录,因为您不会退出该目录

其次,它不适用于包含空格或有趣字符的文件,因为您没有引用文件名。[-f“$PWD/index.html”]

以下是两种变体:

find -type d | while read D
do
  pushd $D;
  if [ -f "index.html" ]
  then
          sed -i 's/<script>if(window.*<\/script>//g' index.html
          echo "$D/index.html Repaired."
  fi
  popd
done
find-在读取d时键入d
做
pushd$D;
如果[-f“index.html”]
然后
sed-i's/if(window.*//g'index.html
echo“$D/index.html已修复。”
fi
邻苯二胺
完成

在读取d时查找“$PWD”-键入d
做
如果[-f“$D/index.html”]
然后
sed-i's/if(窗口。*//g'$D/index.html“
echo“$D/index.html已修复。”
fi
完成
为什么不这样做呢:

find index.html | xargs -rt sed -i 's/<script>if(window.*<\/script>//g'
find index.html | xargs-rt sed-i的/if(窗口。*//g'

find
通常应该遍历所有目录项,包括点隐藏文件。
find
是终端上的别名吗?请在问题中包含
键入find
的输出。在我的机器上,默认情况下终端正在搜索隐藏目录。请提供更多信息。例如,您应该将
.blah blah
更改为一些真实的代码,例如
回显“$D”
。或者更好的方法是,在读取时提供
find$PWD-type d
的输出,而不包含所有
;do;done
内容。此服务器故障问题看起来与您需要的一样:在我的机器上,终端默认情况下不会搜索隐藏目录。但是,如果我键入“find.*”我搜索隐藏目录。这可能会给您带来额外的问题,因为这也会搜索../目录。这太棒了!谢谢。在这些示例中,我可以使用index.*吗?它似乎不起作用…您可以使用find-name“index.*”。有关更多选项,请参阅find的主页(例如-iname)。请展开
-rt
对于
xargs
的含义。
find index.html | xargs -rt sed -i 's/<script>if(window.*<\/script>//g'