命令“查找”输出一条错误消息


-2

我想查询运行命令“ find”时收到的错误消息。在以下段落中,我将解释我要完成的工作。

我有一个父文件夹。在此文件夹中,有许多子文件夹。每个子文件夹中都有许多子子文件夹。我想列出包含特定数量文件的子文件夹。我跑循环如下:

#!/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。我在Google上搜索了有关sh: MPR_Range含义的解释,但找不到任何答案。

Answers:


3

假设您有一个名为的文件foo&barxargs现在将运行命令

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

运行echofind在后台,和两个副本barfoo;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要查找具有特定编号的行,则是否有必要。


1
@goro,当然,对于产生这个错误,你需要有一些文件MPR_Range的文件名和其他适当的角色,但看起来这将是最可能的解释这里
ilkkachu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.