누구든지 이 작업을 수행하는 가장 좋은 방법을 제안할 수 있는지 궁금합니다. 내 Web Dir에는 약 100개의 폴더가 있습니다. 각 폴더는 clientID입니다.
각 ClientID 폴더 내에는 폴더의 하위 집합이 있습니다. 각 폴더 하위 집합에는 동일한 구조화된 폴더 집합이 포함되어 있습니다.
예:
httpdocs/client1234/amazon/
httpdocs/client1234/ebay/
Amazon 및 Ebay 폴더에서 디렉토리 구조는 다음과 같습니다.
In/
Out/
Backup/
내가 원하는 것은 전체 웹 디렉터리를 스캔하고 IN 디렉터리에서 50개 이상의 파일이 포함된 폴더를 찾는 것입니다.
**IN 디렉토리에 포함된 편집입니다. IN 디렉터리의 파일 개수에만 관심이 있습니다.
답변1
이 줄은 작동합니다:
find httpdocs -mindepth 2 -name In | xargs ls -1 | awk '$0 ~ /httpdocs.*In/{name=$0; start=NR} (NR-start)==50{print name;}'
먼저 모든 디렉터리를 찾은 In
다음 모든 파일을 나열하고 마지막으로 해당 디렉터리를 50개 이상의 파일로 필터링합니다.
-mindepth
시작 폴더에 따라 조정하십시오.
답변2
이는 요청된 디렉터리를 반복하면서 파일(및 하위 디렉터리의 파일)을 계산하여 50개 이상의 파일이 있는지 확인하고, 그렇다면 일치하는 디렉터리를 다시 표시합니다.
for dir in httpdocs/*/*/In
do
count=$(find $dir | wc -l)
if [ $count -gt 50 ]
then
echo $dir has more than 50 files
fi
done
.find
wc -l
답변3
#!/bin/bash
for dir in `find ./httpdocs/*/*/ -name In -type d` ; do
count=`find $dir -type f | wc -l`
if [[ $count -gt 50 ]]
echo $dir
fi
done