Рабочая “находка” и передача по каналу вывода в “туалет” / “вид”, во внешнем “находят - должностное лицо”

Мне использовал папку imapsync для хранения его собственного кэша. Такая папка содержит подпапку для каждого почтового ящика, который я синхронизирую, и ничто больше:

[dv@monitor] find * -maxdepth 0 -type d | wc -l
126
[dv@monitor] find * -maxdepth 0  | wc -l
126

Каждая подпапка копирует структуру почтового ящика связанного пользователя/почтового ящика (примечание: imapsync отслеживает целевой почтовый сервер, таким образом, он добавляет также ссылку на него, сохраненный как дополнительная структура папок: 10.0.1.235 в примерах ниже).

[dv@monitor] find director -type d
director
director/10.0.1.235
director/10.0.1.235/director
director/10.0.1.235/director/Deleted Items
director/10.0.1.235/director/Deleted Items/Deleted Items
director/10.0.1.235/director/Contacts
director/10.0.1.235/director/Contacts/Contacts
[....]
director/10.0.1.235/director/INBOX
[...]

В каждой подпапке imapsync храните файл для каждого из синхронизировавших сообщений:

[dv@monitor] ls -l segreteria/10.0.1.235/segreteria/INBOX/INBOX | head -n 10
totale 0
-rw-r--r-- 1 root root 0 19 set 23:36 1000_109
-rw-r--r-- 1 root root 0 19 set 23:36 10009_1342
-rw-r--r-- 1 root root 0 19 set 23:36 10011_1343
-rw-r--r-- 1 root root 0 19 set 23:36 10013_1344
-rw-r--r-- 1 root root 0 19 set 23:36 10028_1345
-rw-r--r-- 1 root root 0 19 set 23:36 10042_1346
-rw-r--r-- 1 root root 0 19 set 23:36 10046_1347
-rw-r--r-- 1 root root 0 19 set 23:36 10048_1348
-rw-r--r-- 1 root root 0 19 set 23:36 10050_1349

Теперь, поскольку я в настоящее время диагностирую imapsync проблемы, я должен быстро определить почтовые ящики, которые, конечно, имели проблемы с синхронизацией. В основном я просто должен считать количество файлов сохраненным в каждой из папок первого уровня.

Поскольку я - поклонник "находки, замечательная программа. Узнайте о нем!" понятие, мое первое предположение было чем-то как:

[**NOT WORKING**] find * -type d -maxdepth 0 -exec 'find {} -type f | wc -l' \;

но это не сделало работавший.

Больше чем после 30 минут internet-based-searching-and-learning, и даже после того, чтобы читать это другое сообщение StackOverflow, я был (мягко) успешен с:

find * -maxdepth 0 -type d -exec sh -c "echo -n {} ; echo -n : ; find {} -type f | wc -l" \;

Обратите внимание на то, что, в вышеупомянутом find первое {} был правильно расширен именем папки первого уровня, в то время как второе {} был правильно расширен с каждым файлом, здесь содержавшим.

Unfortunatly вывод находится в форме <mailbox>:<number_of_messages> как:

 director:25
 sv:25
 segreteria:11532
 registration:146
 newsletter:240

То, что я все еще пропускал, является тривиальной формой к sort вывод, на основе количества сообщений. Если вывод инвертируется (<number_of_messages>:<mailbox>), простое:

 .... | sort -n

решил бы мои потребности, только с 9 дополнительными символами.

Таким образом, я пытался изменить порядок echo во вложенном find. Что-то как:

[**not working**] find * -type d -maxdepth 0 -exec sh -c "find {} -type f | wc -l ; echo -n : ; echo -n {} ;" \;

но это не сделало работавший, вероятно, из-за потребности расшириться {} в обратном порядке (первое вхождение {} быть расширенным вторым find; второй occurrenct {} быть расширенным сначала find).

Так, после всего вышеупомянутого введения, может кто-то указывать на меня, как адаптировать это (правильно работающий) острота:

find * -maxdepth 0 -type d -exec sh -c "echo -n {} ; echo -n : ; find {} -type f | wc -l" \;

таким способом инвертировать вывод (<number>:<mailbox> или, еще лучше <number><space><mailbox>)?


(P.S.: очевидно, существует много способов достигнуть этой самой цели. Что касается меня, у меня не было бы проблемы в увольнении 3/4 perl-сценария строк для разделения/инвертирования вывода каждой строки. Я интересуюсь решениями, которые потребуют "небольшого дополнения" символов; что-то как | sort -n. Так или иначе каждый подсказки/предложения, одобрены),

1
задан 23 May 2017 в 15:41
1 ответ

Вместо того, чтобы пытаться адаптировать вывод вашего вложенного найти oneliner к поведению по умолчанию sort, я предлагаю вам сказать sort, где найти ключ сортировки:

... | sort -t: -k2n

Это, конечно же, в предположении, что ни одно из ваших имен каталогов первого уровня не содержит двоеточия.

.
1
ответ дан 4 December 2019 в 00:00

Теги

Похожие вопросы