加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

通过Bash中的目录

发布时间:2020-12-16 01:29:34 所属栏目:安全 来源:网络整理
导读:我写了一个bash脚本,通过一组文件夹及其子目录一级循环,除去一个文件夹.我很确定我的代码效率很低,并且想知道如何最好地改进它.实现我的目标似乎太长,毫无意义. 我需要脚本cd到一个目录,然后删除子目录中除了几个文件之外的所有文件,但是保留文件夹.是否有助
我写了一个bash脚本,通过一组文件夹及其子目录一级循环,除去一个文件夹.我很确定我的代码效率很低,并且想知道如何最好地改进它.实现我的目标似乎太长,毫无意义.

我需要脚本cd到一个目录,然后删除子目录中除了几个文件之外的所有文件,但是保留文件夹.是否有助于为需要保存的每个文件使用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(combo):将watch.log从搜索中排除
> -delete:删除文件

建议

尝试以上命令,而不使用-delete标志.这将打印出将被删除的文件列表.

一旦您对列表感到满意,请将-delete添加回该命令.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读