我不明白为什么这不起作用。我试图循环文件和文件夹,并根据名称删除其中一些。在下面的示例中,删除除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文件所需的所有权限,我检查了两次。
我错过了什么?
答案 0 :(得分:0)
find /var/www/custom/ -name "*" -type d -mindepth 1 -exec rm -rf {} \;
这将删除自定义目录中的所有目录。如果这是必需的。