ディレクトリツリーをフィルタリングし、結果に応じてbashメニューを作成する

ディレクトリツリーをフィルタリングし、結果に応じてbashメニューを作成する

サーバーと同期しているクラウドにGoogle Driveフォルダがあり、それを使用してWordPress Webディレクトリと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に設定された値を使用してフィルタリングしたいと思います。現在、3つの変数があります。

  • 年度

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に数字を入力するだけで、その数字はフィルタリングされたリストのファイルに対応します。これにより、完全なファイル名パスを記録する時間が節約されます。フィルタが適用されない場合は、すべてのバックアップファイルを表示するYes / Noプロンプト警告を作成します。すべてのバックアップをリストすることにした場合は、リストを一度に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行だけ移動します。

ベストアンサー1

rclone treeスクリプトを入力するのではなく、視覚化のためのものです。この試み:

$ rclone ls "Google Drive Backup:WordPress Backups"

各行には完全修飾パス名があります。これで、以下をフィルタリングできますNovember 2020

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

おすすめ記事