Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 删除脚本仅删除文件而不删除文件夹_Linux_Bash_File Io_Delete Directory - Fatal编程技术网

Linux 删除脚本仅删除文件而不删除文件夹

Linux 删除脚本仅删除文件而不删除文件夹,linux,bash,file-io,delete-directory,Linux,Bash,File Io,Delete Directory,我每周都会通过cron运行一个脚本,删除web服务器上的临时文件,但我刚刚注意到,该脚本并没有删除仍然占用空间的文件夹 修改脚本以删除文件夹的最佳方法是什么 find /my/path/ -type d –ctime +5 –exec rm -r {} \; #!/bin/bash # Deletes temp files older then 5 days DOCS='/var/www/user/docs/temp' SCRATCH='/var/www/user/temp/scratch'

我每周都会通过cron运行一个脚本,删除web服务器上的临时文件,但我刚刚注意到,该脚本并没有删除仍然占用空间的文件夹

修改脚本以删除文件夹的最佳方法是什么

find /my/path/ -type d –ctime +5 –exec rm -r {} \;

#!/bin/bash
# Deletes temp files older then 5 days
DOCS='/var/www/user/docs/temp'
SCRATCH='/var/www/user/temp/scratch'

if [ -d "$DOCS" ]; then
find $DOCSJS -type f -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi
if [ -d "$SCRATCH" ]; then
find $SCRATCH -type f -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi
我的脚本实际上使用-rf作为删除所有文件夹的标志


需要注意的一点是,上面的文件夹是指向
/mnt/sdb1/docs/js
/mnt/sdb1/temp/scratch
的符号链接-脚本是跟随符号链接还是硬编码到挂载

您需要向脚本中的
rm
命令传递附加选项。实际上,您需要
rm-rf
。总之,我建议你去man 1 rm改变一下:

find $DOCSJS -type f -mtime +5 -exec rm
致:

改变这个

if [ -d "$SCRATCH" ]; then
find $SCRATCH -type f -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi
进入


您只能使用
-type f
标志搜索文件;对目录使用
-type d

当前无法删除目录,因为
find
的输出仅限于文件。您应该删除此选项,以便将旧文件和目录都传递到
rm-rf

find $DIR -mtime +5 -exec rm -rf {} \;

这将保留包含新文件的旧目录(但会删除旧文件),但是要删除文件夹,请使用
rm-rf
Plain
rm
不要删除文件夹。我修改了这个问题,因为我已经有了那个标志。当然,这会跳过文件夹根目录中的文件吗?所以应该有另外两个if语句,只用于文件吗跳过if案例以及
-type[fd]
,只需将find与rm-rfthanking一起使用即可。我正在从脚本中删除-type
if [ -d "$SCRATCH" ]; then
find $SCRATCH -type d -mtime +5 -exec rm -rf {} \; > /tmp/docs.txt
fi
find $DIR -mtime +5 -exec rm -rf {} \;