gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:30:42 33 4
gpt4 key购买 nike

我在 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

发生的事情是它确实递归到目录中但没有替换隐藏目录中的代码。我还需要它对 index.* 以及可能包含空格的目录进行操作。

谢谢!

最佳答案

我认为您可能在循环中混淆了 $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'

关于bash - 如何在查找中包含隐藏目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032310/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com