ディレクトリ内のすべてのnanoファイルを一覧表示するスクリプトを作成しています。 hanはファイルに数字を追加します。 (各ファイルに+1が追加されます)これにより、ユーザーはnanoファイルを見ることができます。
これが私が今まで持っているものです。私が指摘したいのは、すべてのファイル名がで終わるということです。_log
これがGrepがこのように機能することを望む理由です。
path=~/home/folder/list
list=$(`ls $path | grep -i \*_log`)
printf '%s\n' "${list[@]}" | nl -v 1
read -p "Number of file to be displayed:" numb
sudo cat $path/${list [numb]}
答え1
私が正しく理解した場合は、すべてのファイルを含む配列を作成してから、ユーザーが入力した番号に対応するファイルの内容を表示したいと思います。もしそうなら、必要以上に仕事をより複雑にすることです。これで十分です。
## Get the files into the array $list
list=(/home/folder/list/*_log)
## Display the file names
for i in ${!list[@]}; do
printf "%s: %s\n" $i "${list[i]}";
done
## Get the user input
read -p "Number of file to be displayed:" numb
## display the file (don't use sudo unless absolutely necessary)
cat "${list[numb]}"
フルパスを含むファイル名が表示されます。名前のみを表示するには、for
ループを次のように変更します。
## Display the file names
for i in ${!list[@]}; do
printf "%s: %s\n" $i "${list[i]##*/}"
done