디렉토리 트리를 필터링하고 결과에 따라 bash 메뉴 생성

디렉토리 트리를 필터링하고 결과에 따라 bash 메뉴 생성

내 서버와 동기화되는 클라우드에 Google Drive 폴더가 있고 이를 사용하여 WordPress 웹 디렉터리와 MySQL 데이터베이스 덤프를 백업하고 복원합니다. 이를 위해 rclone을 사용합니다. 다음을 사용하여 전체 디렉토리 트리를 볼 수 있습니다.

root@ubuntu-server:~# rclone tree "Google Drive Backup:WordPress Backups"
/
└── 2020
    ├── November
    │   └── Sunday 29
    │       └── WordPress backup 29-11-20 (13.55.23).tar.gz
    └── October
        └── Thursday 15
            ├── WordPress backup 15-10-20 (12.15.11).tar.gz
            └── WordPress backup 15-10-20 (23.59.03).tar.gz

5 directories, 3 files

시간이 지남에 따라 이 목록은 꽤 커질 것이므로 필터링 시스템을 구현하여 목록을 줄이고 보고 싶은 파일을 찾으려고 노력하고 있습니다. 일련의 질문을 하고 사용자 입력을 기반으로 일부 변수에 대한 값을 설정하는 작은 스크립트를 만들었습니다.

# Menu
clear
echo "What year would you like to see?"
read -p "Please enter the full year number below e.g. 2020:"$'\n> ' Year
clear
echo "What month would you like to see?"
read -p "Please enter the full month below (case sensitive) e.g. January:"$'\n> ' Month
clear
echo "What day would you like to see?"
read -p "Please enter the day below (requires two characters) e.g. 04:"$'\n> ' Day
clear

기본적으로 명령의 출력을 가져와서 rclone tree변수에 설정된 값을 사용하여 필터링하고 싶습니다. 현재 세 가지 변수가 있습니다.

  • 년도
  • 하늘

grep 명령과 변수 중 하나를 사용하여 디렉터리 트리를 필터링하는 예는 다음과 같습니다.

rclone tree "Google Drive Backup:WordPress Backups" | grep $Month
rclone tree "Google Drive Backup:WordPress Backups" | grep November

내가 직면한 문제는 폴더 내의 하위 목록이 표시되지 않는다는 것입니다. 다음과 같은 문제가 남습니다.

root@ubuntu-server:~# rclone tree "Google Drive Backup:WordPress Backups" | grep November
    ├── November

하위 디렉터리와 손자 디렉터리를 나열해야 하기 때문에 검색에 문제가 있지만 2020남은 것은 다음과 같습니다.

root@ubuntu-server:~# rclone tree "Google Drive Backup:WordPress Backups" | grep 2020
└── 2020

디렉토리 트리가 확인된 숫자로 필터링되면 Bash 스크립트 메뉴에서 각 목록을 해당 숫자 옵션으로 바꾸고 싶습니다. 스크립트 사용자는 CLI에 숫자를 입력하기만 하면 해당 숫자는 필터링된 목록의 파일에 해당합니다. 이렇게 하면 전체 파일 이름 경로를 기록하는 시간이 절약됩니다. 필터가 적용되지 않으면 모든 백업 파일을 표시하는 예/아니요 프롬프트 경고를 만듭니다. 모든 백업을 나열하기로 결정한 경우 목록을 한 번에 10줄로 제한하고 싶습니다. 어떻게 이를 달성할 수 있나요? more페이지당 10개의 항목만 표시하기 위해 stdout에서 전달된 명령을 사용하는 것을 고려했습니다 . 예를 들면 다음과 같습니다.

root@ubuntu-server:~# ls / | more -10
bin
boot
dev
etc
home
lib
lib32
lib64
libx32
lost+found
--More--

그러나 Enter 키를 누르면 --More--다른 10줄로 이동하지 않고 한 번에 한 줄만 이동합니다.

답변1

rclone tree스크립트를 입력하는 것이 아니라 시각화를 위한 것입니다. 이 시도:

$ rclone ls "Google Drive Backup:WordPress Backups"

각 줄에는 완전한 경로 이름이 있습니다. 이제 다음을 필터링할 수 있습니다 November 2020.

$ rclone ls "Google Drive Backup:WordPress Backups" | grep '-11-20'

관련 정보