命令“find”输出错误消息

命令“find”输出错误消息

我想询问运行命令“find”时收到的错误消息。在下一段中,我将解释我想要实现的目标。

我有一个父文件夹。该文件夹内有许多子文件夹。每个子文件夹内都有很多子子文件夹。我想列出包含特定数量文件的子子文件夹。我运行 for 循环如下:

#!/bin/bash
in=PATH_TO_THE_PARENT_FOLDER

for i in ${in}/*; do
find ${i} -maxdepth 1 -type d -print0 | xargs -0 -I {} sh -c 'echo -e $(find {} | wc -l) {}' | sort -n | grep -w 69 | awk '{print $2}' #69 represent the total number of files within a folder
done

此代码输出以下错误消息sh: MPR_Range: No such file or directory。我用谷歌搜索寻找其含义的解释sh: MPR_Range,但找不到任何答案。

答案1

假设您有一个名为foo&bar.xargs现在将运行命令

sh -c 'echo -e $(find foo&bar | wc -l) foo&bar' 

它在后台运行,并且有echo两个.对于, 和 也类似。findbarfoo;bar$(bar)

不要{}在参数中使用sh -c,而是将文件名作为单独的参数,即

... |xargs sh -c 'echo -e $(find "$1" | wc -l) "$1"' sh {} | ...

此外,您可以使用find -exec以下代替xargs

find -type d -exec sh -c 'echo ...' \; 

我也不确定是否sort有必要,如果您grep无论如何都要去查找具有特定数字的行。

相关内容