我确信这是直截了当的并且在某个地方回答,但我找不到我想要的东西.基本上,我正在尝试运行一个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)
基于我从所有回复的人那里学到的东西.再次,非常感谢大家.
我要求脚本到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)