从目录中获取文件名,将其放入文件中,然后将其压缩(UNIX)

从目录中获取文件名,将其放入文件中,然后将其压缩(UNIX),unix,zip,pipe,io-redirection,Unix,Zip,Pipe,Io Redirection,好吧,我今天一整天都在试着看这是否可行 在我的例子中,我有一个包含一百万个缓存文件的缓存文件夹(是的,它是不可能打开的)。所以对于内务管理,我想删除自120天以来未被访问的内容,并记录删除的内容。使用以下行成功清理了大约200K个文件: find thisfolder -name "pattern*" -type f -atime +120 -exec rm -f {} \; -fprint /home/myfolder/logs/deleted_cache.txt 2>&1 但

好吧,我今天一整天都在试着看这是否可行

在我的例子中,我有一个包含一百万个缓存文件的缓存文件夹(是的,它是不可能打开的)。所以对于内务管理,我想删除自120天以来未被访问的内容,并记录删除的内容。使用以下行成功清理了大约200K个文件:

find thisfolder -name "pattern*" -type f -atime +120 -exec rm -f {} \; -fprint /home/myfolder/logs/deleted_cache.txt 2>&1
但后来,我得到了一个大约50MB的日志文件(deleted_cache.txt)。那对管家没什么好处。所以我想把拉链拉上,希望我们能腾出更多的空间

了解I/O重定向、管道和zip;在几次尝试之后,似乎不可能在一条线上完成。bash脚本是唯一的方法吗

请开导我。
谢谢。

您可以使用以下命令:

find thisfolder -name "pattern*" -type f -atime +120 -delete -printf '%f\n' | gzip > deleted_cache.gz
  • -删除
    删除文件
  • -printf
    将文件名打印到标准输出
  • gzip
    compressstdin

注意:我只在Ubuntu中测试它