小编inf*_*fmz的帖子

使用find删除所有子目录(及其文件)

我确信这是直截了当的并且在某个地方回答,但我找不到我想要的东西.基本上,我正在尝试运行一个cron脚本来每7天清除一个给定目录的内容.到目前为止,我尝试过以下方法,

find /myDir -mtime 7 -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

然而,这也删除了我不想要的父目录myDir.我也试过了,

find /myDir -type f -type d -mtime 7 -delete
Run Code Online (Sandbox Code Playgroud)

似乎什么都不做.我也试过了,

fnd /myDir -type d -delete
Run Code Online (Sandbox Code Playgroud)

除了父目录之外,我只需要删除所有内容.然而,一条警告信息出现了,

相对路径可能不安全

我很感激,如果有人可以纠正我的脚本,以便安全地删除文件夹中的所有子目录.

非常感谢.=)

更新: 我决定采取以下措施,

find /myDir -mindepth 1 -mtime 7 -delete
Run Code Online (Sandbox Code Playgroud)

基于我从所有回复的人那里学到的东西.再次,非常感谢大家.

bash recursion rm find subdirectory

18
推荐指数
3
解决办法
1万
查看次数

循环遍历Bash中的目录

我要求脚本到cd一个目录,然后删除子目录中除了几个文件之外的所有文件 - 但保留文件夹.对于我需要保留的每个文件使用switch/ cases 会有帮助吗?

理想情况下,我认为它应该继续搜索更多的子目录,而不是我有嵌套循环,只搜索两个级别.

另一个问题是它跳过带有空格的文件夹(虽然这不是脚本将运行的卷的问题,现在).

这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

bash scripting loops

12
推荐指数
2
解决办法
4万
查看次数

标签 统计

bash ×2

find ×1

loops ×1

recursion ×1

rm ×1

scripting ×1

subdirectory ×1