/ usr / bin / find:参数列表太长

时间:2018-02-13 19:46:34

标签: bash

我知道这是一个常见的错误,但我确实陷入了困境并且可以使用一些帮助。

我需要在名为Parent的子目录中创建一个Excel表格,该子目录存在于根文件夹Tabletop中。这就是我所拥有的:

find $(find /Volumes/COMMON-LIC-PHOTO/STUDIO-COMPLETE/ARCHIVE/Tabletop -type d -iname parent | xargs) -type f > Parent_Files_TT.csv

它搜索名为Parent的文件夹,然后将完整文件路径复制到Excel。这已经适用于我拥有的其他较小的文件夹,但Tabletop中有数十万个文件,我收到错误:

  

/ usr / bin / find:参数列表太长

我试图在找到文件时修改它以使用xargs

find $(find /Volumes/COMMON-LIC-PHOTO/STUDIO-COMPLETE/ARCHIVE/Tabletop -type d -iname parent | xargs) -type f -print0 | xargs > Parent_Files_TT.csv

并且还尝试了"*"

find $(find /Volumes/COMMON-LIC-PHOTO/STUDIO-COMPLETE/ARCHIVE/Tabletop -type d -iname parent | xargs) -type f -name "*" > Parent_Files_TT.csv

但是我得到了同样的错误。如果有人可以帮我修改,我真的很感激。

2 个答案:

答案 0 :(得分:2)

这部分

find /Volumes/COMMON-LIC-PHOTO/STUDIO-COMPLETE/ARCHIVE/Tabletop \
    -type d -iname parent

返回太多结果,外部命令变得太长。您可以通过不同地嵌套find来避免这种情况:

find /Volumes/COMMON-LIC-PHOTO/STUDIO-COMPLETE/ARCHIVE/Tabletop \
    -type d -iname parent \
    -exec find {} -type f \; > Parent_Files_TT.csv

答案 1 :(得分:1)

不要在查找中添加查找,而是一次性完成:

find /Volumes/COMMON-LIC-PHOTO/STUDIO-COMPLETE/ARCHIVE/Tabletop \
    -ipath '*/parent/*' -type f