【问题标题】:How to pass command into xargs that contains pipe?如何将命令传递给包含管道的 xargs?
【发布时间】:2019-06-25 09:37:02
【问题描述】:

我有一个相对简短的问题,你是怎么做这样的事情的:

ls -1a | xargs -L1 (find ./'{}' -type f | wc -l)

(它基本上应该计算当前文件夹中每个文件夹中的文件数)

(更准确地说,如何将find ./'{}' -type f | wc -l 放入ls -1a | xargs -L1 (HERE)

提前谢谢你!

编辑

我正在使用这个命令来获取每个后续​​文件夹中的文件数,即结果应该是这样的

2134123 # Folder #1
1234231 # Folder #2 
12341   # Folder #3
2343224 # Folder #4

【问题讨论】:

  • 我不知道您是想要计算当前目录“下方”的所有常规文件的数量,还是某种描述当前目录“下方”每个目录中常规文件数量的输出。请更新您的问题以包含所需的确切输出。
  • 一般来说,如果您发现自己在说“do ... in each ...”之类的话,如果您希望代码可维护,请考虑使用循环而不是超长单行.

标签: bash pipe sh


【解决方案1】:

请看Why not parse ls?

find . -type d | while read d; do 
  echo $d $(find "$d" -maxdepth 1 -type f | wc -l)
done

【讨论】:

  • 这将只给出一个值,我想为当前目录@vintnes 中的每个文件夹单独设置值
  • @Lu4 请更新您的问题以包含 exact 所需的输出。
猜你喜欢
  • 1970-01-01
  • 2019-02-18
  • 2020-05-14
  • 2019-03-22
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多