誰もがこれを行うための最良の方法を提案できるかどうか疑問に思います。私のWeb Dirには約100個のフォルダがあります。各フォルダは clientID です。
各ClientIDフォルダ内にはフォルダのサブセットがあります。各フォルダサブセットには、同じ構造化フォルダセットが含まれています。
例:
httpdocs/client1234/amazon/
httpdocs/client1234/ebay/
AmazonとEbayフォルダのディレクトリ構造は次のとおりです。
In/
Out/
Backup/
私が望むのは、Webディレクトリ全体をスキャンし、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