,find_string.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/bash
  2. # Coding: utf-8
  3. # Editor: www.geany.org
  4. # Created 2016-12-24
  5. source $HOME/.SCR/lib.sh
  6. echo ""
  7. fun_echo_color 11 0 "Example: Move|Delete 19|15 16 10"
  8. echo ""
  9. read -p "Seeking words: " args
  10. echo ""
  11. num_args="$(echo "$args" | wc -w)"
  12. arg1="$(echo "$args" | awk -F" " '{ print $1}')"
  13. echo "$num_args $arg1"
  14. fun_echo_color 10 0 "Select folder to find files consist this lines:"
  15. echo ""
  16. echo "[1] .RES/txt"
  17. echo "[2] .RES/dvd"
  18. echo "[3] cloud"
  19. echo "[4] LOG"
  20. read ChoiceNamber
  21. case "$ChoiceNamber" in
  22. "1" )
  23. folder="$HOME/.RES/txt"
  24. option="-rhi"
  25. ;;
  26. "2" )
  27. folder="$HOME/.RES/dvd"
  28. option="-rn"
  29. ;;
  30. "3" )
  31. exit_cmd="y"
  32. until [ "$exit_cmd" == "$y" ]
  33. do
  34. echo ""
  35. fun_echo_color 10 0 "r. Print search results"
  36. fun_echo_color 10 0 "p. Print some file"
  37. fun_echo_color 10 0 "e. Exit"
  38. echo ""
  39. read ChoiceNamber
  40. case "$ChoiceNamber" in
  41. "r" ) egrep -riIn --include "*.txt" -A 2 --color=always "$arg1" "$HOME/cloud" | sed -e 's/\/home\/a\/cloud\///g'
  42. ;;
  43. "p" ) file="$(egrep -riInl --include "*.txt" "$arg1" "$HOME/cloud" | rofi -dmenu -width 90)"
  44. fun_echo_color 1 1 "*********************************************************************************************"
  45. cat "${file}"
  46. fun_echo_color 1 1 "*********************************************************************************************"
  47. ;;
  48. "e" ) exit 0
  49. ;;
  50. * ) fun_echo_color 10 0 "You choose ${ChoiceNamber}. May be r|p|e only"
  51. ;;
  52. esac
  53. done
  54. ;;
  55. "4" )
  56. folder="$HOME/LOG"
  57. option="-riI"
  58. ;;
  59. * )
  60. fun_echo_color 10 0 "You choose ${ChoiceNamber}. May be 1-4 only"
  61. exit 0
  62. ;;
  63. esac
  64. # -r выполняет рекурсивный поиск
  65. # -H вызывает печать имени файла (подразумевается при поиске нескольких файлов)
  66. # -I игнорировать двоичные файлы (дополнение: -a обрабатывать все файлы как текст)
  67. # -h не начинать вывод с имени файла
  68. # -i выполнить поиск без учета регистра
  69. # -n вызывает печать номера строки
  70. fun_find ()
  71. {
  72. egrep $option --color=always "$1" $folder | sort
  73. }
  74. if [ $num_args == "1" ];
  75. then
  76. fun_find "$arg1"
  77. exit 0
  78. fi
  79. arg2="$(echo "$args" | awk -F" " '{ print $2}')"
  80. if [ $num_args == "2" ];
  81. then
  82. fun_find "$arg1" | egrep "$arg2"
  83. exit 0
  84. fi
  85. arg3="$(echo "$args" | awk -F" " '{ print $3}')"
  86. if [ $num_args == "3" ];
  87. then
  88. fun_find "$arg1" | egrep "$arg2" | egrep "$arg3"
  89. exit 0
  90. fi