循环浏览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
    
已邀请:
这个怎么样?
$ find /Users/YourName/Desktop/Test -type f -maxdepth 2 -not -name watch.log -delete
说明
-type
:仅查找文件
-maxdepth
:最多下降两个级别
-not -name
(组合):从搜索中排除
watch.log
-delete
:删除文件 建议 首先尝试不带
-delete
标志的上述命令。这将打印出将要删除的文件列表。 对列表满意后,在命令中添加ѭ9。     
您应该使用
find
for i in $(find . -type d)
do
    do_stuff \"$i\"
done
如果您确实有很多目录,则可以将find的输出传递到
while read
循环中,但是由于该循环在另一个进程中,因此使编码变得更加困难。 关于空格,请确保引用包含目录名称的变量。那应该允许您处理名称中带有空格的目录。     
使用查找?您可以使用多个参数,包括深度,文件使用期限(如统计信息),权限等。
find . -maxdepth 2
    

要回复问题请先登录注册