仅打印文件、包含文件的目录和空目录

仅打印文件、包含文件的目录和空目录

我正在尝试索引一些 LTO 磁带(以及一些硬盘),并且想要一个存储在文本文件中的简单输出。就像下面的例子:

...
/home/norg/Desktop/empty\ dir/
/home/norg/Documents/file.txt
...

“empty dir”文件夹当然是一个空文件夹。请注意“桌面”和“文档”等文件夹是如何打印的,因为它们里面有内容。换句话说,/home/norg/Desktop/永远不会被打印,除非它是空的。

我尝试过类似的方法ls -RFad /home/norg/和一些find语法,取得了不同程度的成功。最棘手的部分是打印空目录,但不打印完整目录。我希望这是有道理的。谢谢。

另一件事要提的是,我真的更喜欢它一次性工作,因为我将使用它与磁带,并希望尽可能少地读取以减少磨损。

答案1

find /home/norg \( -type d -empty \) -o -type f

这将列出下面的空目录和常规文件/home/norg

尽管问题标题提到“包含文件的目录”,但根据问题文本,这些目录不会打印为项目。

另请注意,它仅打印常规文件。如果您有例如 fifo 或设备,这些将不会出现(如果您有一个仅包含设备的文件夹,也不会打印它)。如果您还想包含它们,您可以使用

find  \( -type d -empty \) -o -not -type d

相关内容