删除目录中所有目录内的文件

删除目录中所有目录内的文件

我最近需要删除父目录中约 40 个目录中的所有文件,但不删除目录本身。我最终手动完成了此操作,但有没有更有效的方法?即,是否有可以执行此操作的 Linux 命令?

为了更清楚地了解我的意思:

HomeDirectoryName --> subdirectoryName --> 4 个模拟信息文件

我有上述路径,但有 40 个子目录,每个子目录都有 4 个模拟文件。我需要删除所有模拟信息文件,而不删除“subdirectoryName”目录。

这可能不可行,因为我到处搜索了大约一个小时才最终决定手动完成。

答案1

find命令非常简单 - 只需用于-type f查找文件而不是目录

find /path/to/parent/directory -type f -delete

默认情况下,find递归到子目录,因此将从该点向下找到树中的所有文件。

答案2

从父目录运行

find -type f -exec rm {} \;

分别删除每个文件,或者

find -type f -exec rm {} +

rm一次将多个文件放入队列。

对于 Python 爱好者来说,这里是另一种解决方案:

 python -c 'import os;[os.unlink(os.path.join(r,f)) for r,d,fs in os.walk(".") for f in fs]'

答案3

从父目录

rm */*

将删除 160 个模拟信息文件,但不删除包含这些文件的 40 个目录。

(在这种情况下这并不重要,但在将来知道rm除非您明确要求使用-r标志,否则永远不会删除目录可能会很有用。)

相关内容