【发布时间】:2018-07-24 06:38:22
【问题描述】:
我知道这是一个常见错误,但我真的被困住了,需要一些帮助。
我需要在根文件夹Tabletop 中名为Parent 的子目录中创建所有文件的Excel 表。这就是我所拥有的:
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
但我遇到了同样的错误。如果有人能帮我修改一下,我将不胜感激。
【问题讨论】:
-
您不需要将
xargs -0与find ... -print0配对吗? -
我非常有信心通过添加 -type f -print0 | 这确实有效。 xargs -0,但不幸的是我仍然得到同样的错误。
-
我认为
find $(...)部分是这里的问题。你正在插入一个巨大的东西。尝试对其进行重组,以某种方式将第一个 find 的结果传递给第二个。
标签: bash