Advertisement
Guest User

Untitled

a guest
Oct 20th, 2014
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.74 KB | None | 0 0
  1. /home/Work/LogFiles/20131200012.log
  2. /home/Work/LogFiles/thisLogIsDifferent.log
  3. /home/Work/LogFiles/20120322222.log
  4. /home/Work/LogFiles/20140100011.log
  5. /home/Work/LogFiles/thisLogIsDifferent2.log
  6.  
  7. /home/Work/LogFiles/thisLogIsDifferent.log
  8. /home/Work/LogFiles/thisLogIsDifferent2.log
  9. /home/Work/LogFiles/2013/DEC/20131200012.log
  10. /home/Work/LogFiles/2012/MAR/20120322222.log
  11. /home/Work/LogFiles/2014/JAN/20140100011.log
  12.  
  13. BASE_DIR=/home/Work/LogFiles
  14. REPORT_DIR_YEAR=$BASE_DIR/`date +%Y`
  15. REPORT_DIR=$REPORT_DIR_YEAR/`date +%b`
  16.  
  17. NOW=$(date +"%Y%m")
  18.  
  19. if ! [ -d $REPORT_DIR_YEAR ]; then
  20. mkdir $REPORT_DIR_YEAR
  21.  
  22. if ! [ -d $REPORT_DIR ]; then
  23. mkdir $REPORT_DIR
  24. fi
  25. fi
  26.  
  27. #THIS PART NEED TO BE RE-ARRANGED
  28. #What I expect is not date=NOW; BUT SOME KIND LIKE date %m-1? but I still don't have any ideas about modify date function.
  29.  
  30. for file in find $BASE_DIR -maxdepth 1 -type f -mtime +30 -name '*$NOW*'
  31. do
  32.  
  33. month=$(ls -l $file | awk '{ print $6 }')
  34. case "$month" in
  35. "Jan") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  36. "Feb") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  37. "Mar") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  38. "Apr") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  39. "May") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  40. "Jun") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  41. "Jul") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  42. "Aug") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  43. "Sep") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  44. "Oct") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  45. "Nov") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  46. "Dec") mv $file $REPORT_DIR_YEAR/$month/$file echo "$file moved to $REPORT_DIR/$file";;
  47. *) echo " Do nothing " ;;
  48. esac
  49.  
  50. done
  51.  
  52. $ ls -l 20120322222.log
  53. -rw-r--r-- 1 terdon terdon 0 Jan 1 2012 20120322222.log
  54. $ stat -c %y 20120322222.log
  55. 2012-01-01 00:00:00.000000000 +0100
  56.  
  57. $ date -d "2012-01-01" +"%b"
  58. Jan
  59.  
  60. $ date -d "$(stat -c %y 20120322222.log)" +"%b"
  61. Jan
  62.  
  63. #!/usr/bin/env bash
  64. BASE_DIR=/home/Work/LogFiles
  65.  
  66.  
  67. ## Find those files that are older than a month
  68. find "$BASE_DIR" -maxdepth 1 -mtime +30 -type f -name "20*" |
  69. while IFS= read -r file; do
  70. ## Get the file's modification year
  71. year="$(date -d "$(stat -c %y "$file")" +%Y)"
  72. ## Get the file's modification month
  73. month="$(date -d "$(stat -c %y "$file")" +%b)"
  74.  
  75. ## Create the directories if they don't exist. The -p flag
  76. ## makes 'mkdir' create the parent directories as needed so
  77. ## you don't need to create $year explicitly.
  78. [[ ! -d "$BASE_DIR/$year/$month" ]] && mkdir -p "$BASE_DIR/$year/$month";
  79.  
  80. ## Move the file
  81. mv "$file" "$BASE_DIR/$year/$month"
  82. done
  83.  
  84. #!/usr/bin/env bash
  85. BASE_DIR=/Users/user/
  86.  
  87.  
  88. ## Find those files that are older than a month
  89. find "$BASE_DIR" -maxdepth 1 -type f |
  90. while IFS= read -r file; do
  91. ## Get the file's modification month
  92. month=$(stat -f "%Sm" -t "%m" $file)
  93. ## Get the file's modification day
  94. day=$(stat -f "%Sm" -t "%d" $file)
  95. ## Get the file's modification hour
  96. hour=$(stat -f "%Sm" -t "%H" $file)
  97.  
  98.  
  99. ## Create the directories if they don't exist. The -p flag
  100. ## makes 'mkdir' create the parent directories as needed so
  101. ## you don't need to create $year explicitly.
  102. [[ ! -d "$BASE_DIR/$month/$day/$hour" ]] && mkdir -p "$BASE_DIR/$month/$day/$hour";
  103.  
  104. ## Move the file
  105. mv "$file" "$BASE_DIR/$month/$day/$hour"
  106. done
  107.  
  108. #!/bin/bash
  109.  
  110. BASE_DIR="${1}"
  111.  
  112. if [ -z "${BASE_DIR}" ]; then
  113. BASE_DIR="/home/Work/LogFiles"
  114. fi
  115.  
  116. if [ ! -d "${BASE_DIR}" ]; then
  117. echo "Error: '${BASE_DIR}' does not exists." >2
  118. exit 1
  119. fi
  120.  
  121. declare -a MONTH_NAMES
  122. MONTH_NAMES[1]='JAN'
  123. MONTH_NAMES[2]='FEB'
  124. MONTH_NAMES[3]='MAR'
  125. MONTH_NAMES[4]='APR'
  126. MONTH_NAMES[5]='MAY'
  127. MONTH_NAMES[6]='JUN'
  128. MONTH_NAMES[7]='JUL'
  129. MONTH_NAMES[8]='AUG'
  130. MONTH_NAMES[9]='SEP'
  131. MONTH_NAMES[10]='OCT'
  132. MONTH_NAMES[11]='NOV'
  133. MONTH_NAMES[12]='DEC'
  134.  
  135.  
  136. find "${BASE_DIR}" -maxdepth 1 -mtime +30 -type f -name '*.log'
  137. | grep -e '/[0-9]*.log$'
  138. | while read FILE; do
  139.  
  140. FILENAME="$(basename "${FILE}")"
  141.  
  142. FILE_YEAR="$(echo "${FILENAME}" | cut --bytes=1-4)"
  143. FILE_MONTH="$(echo "${FILENAME}" | cut --bytes=5-6)"
  144.  
  145. FILE_MONTH_NAME="${MONTH_NAMES[${FILE_MONTH}]}"
  146.  
  147. REPORT_DIR="${BASE_DIR}/${FILE_YEAR}/${FILE_MONTH_NAME}"
  148. test -d "${REPORT_DIR}" || mkdir -p "${REPORT_DIR}"
  149.  
  150. mv "${FILE}" "${REPORT_DIR}"
  151.  
  152. echo "'${FILENAME}' moved to '${REPORT_DIR}'"
  153. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement