gpt4 book ai didi

linux - for 循环中的星号无法按预期工作?

转载 作者:太空狗 更新时间:2023-10-29 12:40:20 26 4
gpt4 key购买 nike

我不明白为什么这不起作用。我正在尝试遍历文件和文件夹并根据名称删除其中一些。在下面的示例中,删除除 if 语句中的文件夹之外的所有文件夹。

代码如下:

#!/bin/bash

workdir=/var/www/
for dir in $workdir/custom/*; do
if ! [ "$dir" == "$workdir/custom/somefolder" ]; then
rm -rf $dir
echo "remove $dir $?"
fi
echo "$dir"
done

问题是 /custom/ 中有几个文件和文件夹,但是 echo "$dir" 输出 /var/www/custom/*一次而不是遍历该目录中的每个文件和文件夹。我知道这意味着 * 不匹配任何内容,但这是不可能的。

文件夹存在,里面有几个文件和文件夹,路径是正确的,而且用户对rm文件有所有需要的权限,我检查了两次。

我错过了什么?

最佳答案

find /var/www/custom/ -name "*" -type d -mindepth 1 -exec rm -rf {} \;

这将删除自定义目录中的所有目录。如果这是必需的。

关于linux - for 循环中的星号无法按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47315628/

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