linux - 查找并删除所有在某个时间未修改的已关闭文件

标签 linux find filesystems

我正在 Linux 中构建一个脚本,该脚本将从光盘中删除操作系统当前未使用的文件。我想使用 find 命令,这样我就可以对我发现的所有未打开的文件执行 rm 。 到目前为止我尝试过这个命令但没有成功:

find /folderToSearch/ -type f | while read filename ; do /sbin/fuser -s $filename || echo $filename ; done

我在一些网站上发现这个命令,它应该打印所有未使用的文件。虽然当我同时使用“vi”命令打开时发现它仍然打印文件名。

最佳答案

要获取打开文件的列表,您可以使用lsof命令。通过 find 命令获取目录中的所有文件列表并将其全部删除。

1).获取目录中打开的文件列表。

lsof /folderToSearch |awk '{print $NF}'|sed -e '1 d' |sort |uniq >/tmp/lsof

2).获取目录中的文件列表。

find /folderToSearch -type f -print >/tmp/find

3).从 /tmp/find 文件中删除 /tmp/lsof 列表,然后删除它们。

grep -v  -w -f /tmp/lsof /tmp/find |xargs rm -f

关于linux - 查找并删除所有在某个时间未修改的已关闭文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30773367/

相关文章:

linux - 如何在 Debian 测试中安装 mono 3?

Linux:计算名称和内容中包含单词的文件

c++ - 标准::查找 'error no matching function'

c - Chan的FAT FILE SYSTEM MODULE写入字节数有限制吗?

MySQL "filegroup"?

linux - 在 .so 库上使用 gprof?

linux - 在 Linux 中向群组发送消息

linux - 从一个更大的二进制文件中寻找一个大的二进制值

batch-file - 批量查找命令不起作用

javascript - 使用 XHR2 请求而不是 cordova-file-transfer 将二进制数据下载到应用程序沙箱中