2014-01-22 3 views
1

У меня есть сценарий оболочки Bash, который отправляет электронное письмо каждый день в определенное время. код выглядит следующим образом:Как форматировать вывод почты скрипта оболочки Bash

first_dir=/test1 second_dir=/test2 

[email protected] 

allfiles=$(find /test1 /test2 -maxdepth 1 | sort) IFS=$'\n' 

while true do sleep 24h 

[ "$allfiles" != "" ] && 
    find $allfiles -maxdepth 1 -printf '%Tc\t%s\t%p\n' | 
    mail -s "List Of All Files" "$email" 

files="$allfiles" 

done 

Этот сценарий дает выход в одном столбце. , но я хочу Output в двух столбцах.

  • первый столбец с файлами first_dir =/test1
  • второй колонке с файлами second_dir =/test2
+2

Первый: вы должны использовать [crontab] (http://linux.die.net/man/5/crontab) для планирования в течение определенного времени. Это будет выполняться каждые 24 часа во время запуска скрипта. – PeterMmm

+0

@PeterMmm планирование и запуск не являются проблемой. Я хочу, чтобы ясный список файлов по почте в двух отдельных столбцах, чтобы я мог легко выполнить анализ. – Readerlook

ответ

4

Если вы хотите, чтобы они разделены так, не присоединиться к ним вместе в первый место

first_dir=/test1 
second_dir=/test2 
while sleep 24h; do 
    first_files=$(find $first_dir -maxdepth 1 -printf '%Tc\t%s\t%p\n') 
    second_files=$(find $second_dir -maxdepth 1 -printf '%Tc\t%s\t%p\n') 
    paste <(sort -t $'\t' -k 3,3 <<< "$first_files") \ 
      <(sort -t $'\t' -k 3,3 <<< "$second_files") | 
    mail -s "List Of All Files" "$email" 
done 
+0

+1 хорошее использование пасты. – anubhava

+1

Это было бы даже лучше, если бы не 'sleep', а в задании cron. – Johnsyweb

+0

просто продолжайте пуск .. вот и все .. хорошо .. 1UP – Ashish

Смежные вопросы