如何在查找中包含隐藏目录?

时间:2012-04-05 16:22:33

标签: bash find

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

find $PWD -type d | while read D; 
do
..blah blah
done

这可行,但不会通过隐藏目录(如.svn)进行递归。如何确保此命令包含所有隐藏目录以及非隐藏目录?

编辑:这不是发现。这是我的替换代码。以下是完成和完成之间的整个片段:

    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

会发生什么事情,它会递归到目录中,但不会替换隐藏目录中的代码。我还需要它来操作索引。*以及可能包含空格的目录。

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为你可能会在你的循环中混淆$ PWD和$ D.

有几个选项可以解释为什么您的代码也会出错。 首先,它只适用于绝对目录,因为您不退出目录。这可以通过使用pushd和popd来修复。

其次,它不适用于包含空格或有趣字符的文件,因为您没有引用文件名。 [-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 "$PWD" -type d | while read D
do 
  if [ -f "$D/index.html" ]
  then
       sed -i 's/<script>if(window.*<\/script>//g' "$D/index.html"
       echo "$D/index.html Repaired."
  fi
done

为什么不这样做呢:

find index.html | xargs -rt sed -i 's/<script>if(window.*<\/script>//g'
相关问题