循环浏览Bash中的目录
|
我要求脚本将“ 0”放到目录中,然后删除子目录中的除少数几个文件以外的所有文件,但不要理会这些文件夹。我需要保留的每个文件都使用
switch
/case
会有所帮助吗?
理想情况下,我认为它应该继续搜索其他子目录,而不是让我拥有仅向下搜索两个级别的嵌套循环。
另一个问题是,它会跳过带空格的文件夹(尽管暂时来说,脚本将要运行的卷并不存在问题)。
这是我的代码:
for i in /Users/YourName/Desktop/Test/* ; do
if [ -d \"$i\" ]; then
cd $i
for j in \"$i\"/* ; do
if [ -d \"$j\" ]; then
cd $j
for k in $(ls *); do
if [ ! $k == \"watch.log\" ]; then
echo $k
rm -rf $k
fi
done
fi
done
fi
done
没有找到相关结果
已邀请:
3 个回复
梦话快家腹
说明
:仅查找文件
:最多下降两个级别
(组合):从搜索中排除
:删除文件 建议 首先尝试不带
标志的上述命令。这将打印出将要删除的文件列表。 对列表满意后,在命令中添加ѭ9。
补蹲农界维
:
如果您确实有很多目录,则可以将find的输出传递到
循环中,但是由于该循环在另一个进程中,因此使编码变得更加困难。 关于空格,请确保引用包含目录名称的变量。那应该允许您处理名称中带有空格的目录。
疼嘶桐