"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
, 및 와 유사합니다.find
bar
foo;bar
$(bar)
{}
inargments 를 사용 하지 말고 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