在 Linux 上,使用 LS 的 FIND 命令在没有选项 -d 的情况下未显示正确的结果
On Linux, FIND command with LS not showing proper result without option -d
我需要检查当前文件夹中最后一天创建的所有文件,该文件夹有数百万个文件。
如果我使用以下命令,则会显示正确的 80 或 90 个文件。这是正确的。
find . -ctime -1 -exec ls -ld {} \;
但是如果我将 ls 选项更改为 rt 或 l 或任何其他没有 d 的选项。它显示错误的结果。它显示了数千个文件。我最终不得不按控制 C 来停止输出。以下都是错误的永无止境的结果。
find . -ctime -1 -exec ls -l {} \;
find . -ctime -1 -exec ls -t {} \;
find . -ctime -1 -exec ls -rt {} \;
find . -ctime -1 -exec ls {} \;
谁能告诉我这是怎么回事。为什么它只适用于 d。
不过以下作品
find . -ctime -1 -exec ls -lrtd {} \;
如果你这样做 ls /tmp
,你就会明白为什么。它为您提供 /tmp
目录中的所有文件,而不是目录本身的详细信息。
您可以 'fix' 通过使用 -d
让 ls
显示目录而不是其中的文件(如您所见)或使用 find -type f
将您的搜索限制为仅常规文件。这是假设它只是您感兴趣的常规文件,层次结构中还存在诸如 FIFO 管道和设备之类的东西,但是 -type
上还有其他变体,如果需要它们会选择这些变体(请参阅 find
手册页了解详细信息)。
我需要检查当前文件夹中最后一天创建的所有文件,该文件夹有数百万个文件。
如果我使用以下命令,则会显示正确的 80 或 90 个文件。这是正确的。
find . -ctime -1 -exec ls -ld {} \;
但是如果我将 ls 选项更改为 rt 或 l 或任何其他没有 d 的选项。它显示错误的结果。它显示了数千个文件。我最终不得不按控制 C 来停止输出。以下都是错误的永无止境的结果。
find . -ctime -1 -exec ls -l {} \;
find . -ctime -1 -exec ls -t {} \;
find . -ctime -1 -exec ls -rt {} \;
find . -ctime -1 -exec ls {} \;
谁能告诉我这是怎么回事。为什么它只适用于 d。 不过以下作品
find . -ctime -1 -exec ls -lrtd {} \;
如果你这样做 ls /tmp
,你就会明白为什么。它为您提供 /tmp
目录中的所有文件,而不是目录本身的详细信息。
您可以 'fix' 通过使用 -d
让 ls
显示目录而不是其中的文件(如您所见)或使用 find -type f
将您的搜索限制为仅常规文件。这是假设它只是您感兴趣的常规文件,层次结构中还存在诸如 FIFO 管道和设备之类的东西,但是 -type
上还有其他变体,如果需要它们会选择这些变体(请参阅 find
手册页了解详细信息)。