x 小时后删除文件但忽略隐藏的文件夹/文件

x 小时后删除文件但忽略隐藏的文件夹/文件

我已将一个文件夹安装到种子箱中。在文件夹中我使用syncthing。所以它创建一个“.stfolder”用于同步。基本上,我无法找到要运行的脚本,该脚本显示“查看 x 文件夹和 xx 子文件夹”,但忽略隐藏文件夹并删除早于 xxx 小时的所有内容。

我尝试修改“ find /path/to/files* -mtime +5 -exec rm {} ; ”,但没有成功,它一直在寻找隐藏文件夹

文件夹结构是这样的并且
downloads/Movies/.stfolderdownloads/TV/.stfolder 文件和子文件夹TVMovies

最终我在树莓派 pi4 上运行它。我的目的是使用 cron 作业来调用脚本每 12 小时左右运行一次。我使用curftpfs将种子盒安装到我的rasperrypi 4上

任何有效的解决方案将不胜感激。谢谢

答案1

LC_ALL=C find /path/to/files/ -name '.*' -prune -o \
  -mtime +5 -type f -exec rm -f {} +

/path/to/files将删除目录中及其目录下最近 6(而不是 5)天内未修改的常规文件,忽略隐藏文件(包括从目录树find下降的隐藏目录中删除的文件)。

如果只是.stfolder要跳过的目录,您可以执行以下操作:

find /path/to/files/ -name .stfolder -type d -prune -o \
  -mtime +5 -type f -exec rm -f {} +

(在这种情况下,这是不必要的,因为这只是为了解决某些实现中非字符之间不匹配的LC_ALL=C事实)。*find

使用zsh,您可以执行以下操作:

rm -f /path/to/files/**/*(.m+5)

由于默认情况下会跳过隐藏的目录/文件。

或者对于除目录中或目录下的文件之外的所有旧文件.stfolder

set -o extendedglob # best in ~/.zshrc
rm -f /path/to/files/(^.stfolder/)#*(D.m+5)

(其中D禁用隐藏文件/目录的跳过,并(^.stfolder)#匹配除调用的子目录之外的任意数量的子目录.stfolder)。

相关内容